• 最終更新日:

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