TypeScriptで可変長引数関数を使う
argumentsは型安全ではない
argumentsは型安全ではないため、以下のコードのtotalとnはいずれもanyになります。
const sum = function(){
return Array.from(arguments).reduce((total, n) => total + n, 0)
}
また、上記の関数はTypeScriptの観点では引数をとらないため、以下のように呼び出すと型エラーになります。
sum(1,2,3,4) //Expected 0 arguments, but got 4.
レストパラメータを使う
それではどのようにTypeSciptで可変長引数関数を使うかというと、レストパラメータを使います。
const sum = function(...number: number[]){
return number.reduce((total, n) => total + n, 0)
}
console.log(sum(1,2,3,4)) //10
console.log(sum(1,2,3,4,5)) //15
上記のように …number とします。
これで total と n は number であると推論されます。
レストパラメータのルール
レストパラメータを使うときは以下のルールがあります。
- 関数は最大で一つのレストパラメータを持つことができる
- レストパラメータは引数の最後でなくてはいけない
参考:
最近のコメント