可変長引数関数:TypeScriptで柔軟なプログラミングを実現
TypeScript 可変長引数関数型シグネチャ
... 演算子
概要: 配列型に ...
演算子を使うことで、可変長引数を宣言できます。
例:
function sum(...numbers: number[]): number {
let total = 0;
for (const num of numbers) {
total += num;
}
return total;
}
const result = sum(1, 2, 3, 4, 5); // 15
型シグネチャ:
function sum(...numbers: number[]): number;
-
...numbers
: 可変長引数パラメータnumber
: 要素型[]
: 配列型
arguments オブジェクト
概要: arguments
オブジェクトは、関数内で呼び出された引数へのアクセスを提供します。
function printArgs() {
for (let i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
printArgs(1, "hello", true);
function printArgs(): void;
arguments
:any
型のオブジェクト。引数の型はチェックされません。
注意: arguments
オブジェクトは非推奨なので、できるだけ使用しないことを推奨します。
Rest Parameters
概要: TypeScript 2.7以降では、...
演算子をパラメータ名と共に使用できます。
function sumRest(...numbers: number[]): number {
let total = 0;
for (const num of numbers) {
total += num;
}
return total;
}
const result = sumRest(1, 2, 3, 4, 5); // 15
function sumRest(...numbers: number[]): number;
Spread Syntax
概要: 可変長引数関数を呼び出す際に、配列を展開できます。
const numbers = [1, 2, 3, 4, 5];
const result = sum(...numbers); // 15
function sum(...numbers: number[]): number;
注意点:
- 可変長引数パラメータは、他のパラメータの後方に宣言する必要があります。
- 可変長引数パラメータは、1つのみ宣言できます。
可変長引数関数を使用する際は、各方法の型シグネチャを理解し、適切な方法を選択することが重要です。
... 演算子
function sum(...numbers: number[]): number {
let total = 0;
for (const num of numbers) {
total += num;
}
return total;
}
// 例
const result1 = sum(1, 2, 3); // 6
const result2 = sum(1, 2, 3, 4, 5); // 15
arguments オブジェクト
function printArgs() {
for (let i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
// 例
printArgs(1, "hello", true);
// 出力:
// 1
// "hello"
// true
Rest Parameters
function sumRest(...numbers: number[]): number {
let total = 0;
for (const num of numbers) {
total += num;
}
return total;
}
// 例
const result3 = sumRest(1, 2, 3); // 6
const result4 = sumRest(1, 2, 3, 4, 5); // 15
Spread Syntax
const numbers = [1, 2, 3, 4, 5];
function sum(...numbers: number[]): number {
let total = 0;
for (const num of numbers) {
total += num;
}
return total;
}
// 例
const result5 = sum(...numbers); // 15
可変長引数関数を扱うその他の方法
reduce メソッド
概要: reduce
メソッドを使って、可変長引数を1つの値に集約できます。
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((total, num) => total + num, 0); // 15
const sum: number;
- 初期値を指定する必要があります。
for ループ
概要: for
ループを使って、可変長引数を処理できます。
function sum(numbers: number[]): number {
let total = 0;
for (const num of numbers) {
total += num;
}
return total;
}
// 例
const numbers = [1, 2, 3, 4, 5];
const result = sum(numbers); // 15
function sum(numbers: number[]): number;
concat メソッド
const numbers1 = [1, 2, 3];
const numbers2 = [4, 5];
const allNumbers = numbers1.concat(numbers2); // [1, 2, 3, 4, 5]
const allNumbers: number[];
- すべての引数が配列である必要があります。
可変長引数関数を扱う方法はいくつかあり、それぞれメリットとデメリットがあります。状況に合わせて最適な方法を選択することが重要です。
typescript