項目36 特別な値には専用の型を使用する
通常のケースで用いられる値の型と、特別なケースで用いられる型を一緒にしない
indexOf
通常のケース
code:ts
1, 2, 3.indexOf(2) // 1 (2の要素のインデックス番号)
特別なケース
code:ts
1, 2, 3.indexOf(5) // -1 (配列内に指定した要素が見つからなかったことを表現する特別な値)
0, -1, ""の代わりに、nullやundefinedを特別な値として使う
このような特別な値と、通常の値の型は一緒にしない
nullなどを使って型として表現できるようにする
code:ts
function safeIndexOf<T>(vals: readonly T[], val: T): number | null {
const index = vals.indexOf(val);
return index === -1 ? null : index;
}
nullやundefinedでは意味するところが明確にならない場合は、タグ付きユニオンの使用を検討する
#TypeScript