typescript 引数 タイプのコール関数(残りはRest)残りのパラメータはRestパラメータ




typescript プロパティ 初期 値 (3)

test1からp1とp2をtest1に渡す方法はありません。 しかし、あなたはこれを行うことができます:

function test2(p1: string, ...p2: string[]): void {
    test1.apply(this, arguments);
}

Function.prototype.applyargumentsオブジェクトを使用しています。

引数オブジェクトが気に入らない場合や、すべての引数がまったく同じ順序で渡されることを望まない場合は、次のようなことができます:

function test2(p1: string, ...p2: string[]) {
    test1.apply(this, [p1].concat(p2));
}

TypeScriptでは、 "Rest Parameters"で関数を宣言することができます:

function test1(p1: string, ...p2: string[]) {
    // Do something
}

test1という別の関数を宣言したとしtest1

function test2(p1: string, ...p2: string[]) {
    test1(p1, p2);  // Does not compile
}

コンパイラは次のメッセージを生成します。

指定されたパラメータが呼び出し対象のシグネチャと一致しません: 'string []'型の引数2に 'string'型を適用できませんでした。

test2呼び出すと、 test1が提供される引数はどのようになりますか?


Answer #1

スプレッドオペレータを試してみてください。 Jefferyの答えと同じ効果が得られるはずですが、より簡潔な構文があります。

function test2(p1: string, ...p2: string[]) {
    test1(...arguments);
}

Answer #2

はい、あなたは間違ったことをしているので、コンパイルしません。 ここに正しい方法です:

function test1(p1: string, ...p2: string[]) {
    // Do something
}

function test2(p1: string, ...p2: string[]) {
    test1(p1, ...p2);
}




typescript