forEachのようなメソッドを使うと、以下のようにvalue
, index
, array
を持ったコールバックを使うことができる。このコールバックを型定義してみよう。
[10, 20, 30].forEach(
(value: number, index: number, array: number[]) => {
console.log();
}
);
しかし、引数を省略して使う時も多い。ということは型に?
をつけるべきでは?と思い、調べてみた。
// indexやarrayを使わないときも多い
[10, 20, 30].forEach(
(value: number) => {
console.log();
}
);
// 全部省略することも
[10, 20, 30].forEach(
() => {
console.log();
}
);
公式の型定義
TypeScript公式でforEachの型定義をしているところを見ると以下の通りである。
lib.es5.d.ts
forEach(
callbackfn: (
value: T,
index: number,
array: readonly T[]
) => void,
thisArg?: any
): void;
callbackfn
の引数を見てみるとオプショナルの?
がついていないことがわかる。
なぜ?
基本的にTypeScriptではコールバックの引数を全てオプショナルだと決めている。
そのため、型定義の時には?
をつけなくてもいい。
どちらかというと、読む時もコールバックの引数はオプショナルがついている前提で読む方がいい。
参考