163

TypeScript言語の主な関心事の1つであるIMOは、既存のバニラJavaScriptコードをサポートすることです。これが一目惚れした印象です。完全に有効な次のJavaScript関数を見てください。

注:私はこのアプローチが好きだと言っているのではありません。これは有効なJavaScriptコードだと言っているだけです。

function sum(numbers) { 

    var agregatedNumber = 0; 
    for(var i = 0; i < arguments.length; i++) { 
        agregatedNumber += arguments[i];
    }

    return agregatedNumber;
}

したがって、この関数を任意の数の引数で使用します。

console.log(sum(1, 5, 10, 15, 20));

ただし、 TypeScript Playgroundでこれを試してみると、コンパイル時エラーが発生します。

これはバグだと思います。互換性の問題はないと仮定しましょう。それでは、このタイプの関数を制限のない引数で書く方法はありますか?paramsC#の機能など?

4

3 に答える 3

311

...これを行う TypeScript の方法は、引数の名前の前に省略記号演算子 ( ) を配置することです。上記は、次のように記述されます。

function sum(...numbers: number[]) {
    var aggregateNumber = 0;
    for (var i = 0; i < numbers.length; i++)
        aggregateNumber += numbers[i];
    return aggregateNumber;
}

これにより、次のように正しくタイプチェックされます

console.log(sum(1, 5, 10, 15, 20));
于 2012-10-02T19:57:08.073 に答える