【TypeScript】関数に複数の引数を配列で受け取る - レストパラメーターに型を指定する
function test(...args) {
args[0]; //配列として使用できる
}
test(1,2,3,4,5);
TypeScriptでは以下のように書くことができます。
function test(...args:number[]) {
args[0]; //配列として使用できる
}
test(1,2,3,4,5);
タプル型でも指定できる。以下の例では、3つの型が指定されているので、3つの引数のみ、指定した型の順番で受け取ることができます。
function test(...args:[number, string, boolean]) {
}
test(1,"hallp",true);
あっても無くても良い場合は?をつける。注意点は後ろから?をつけていくこと。前に?があって、後ろに?があるとエラーになる。
function test(...args:[number, string, boolean?]) {
}
test(1,"hallp");
さらにこんな書き方もできる。(タプル型のみ)ただし、後から追加した...number[]は1つしかつけれない。
function test(...args:[number, string, boolean, ...number[]]) {
}
test(1,"hallp");
readonlyをつけることもできる。これでpushで配列の中に加えることを防ぐ。
function test(...args: readonly [number, string, boolean, ...number[]]) {
console.log(args); // [1, 'hallp', true, 333, 444]
args.push(11111); //readonlyによって、配列に追加できない
}
test(1, 'hello', true, 333, 444);