1. ホーム
  2. javascript

[解決済み] TypeScriptの自由形式関数引数

2022-04-25 09:52:33

質問

IMOの主な関心事の1つは タイプスクリプト は、既存のバニラ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));

しかし、試しに タイプスクリプト・プレイグラウンド を使用すると、コンパイル時にエラーが発生します。

これはバグだと推測しています。互換性の問題はないと仮定しましょう。では、この種の関数を自由な引数で書く方法はないのでしょうか?例えば params の機能を C# で使用できますか?

どのように解決するのですか?

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));