🔖

[TypeScript]filterメソッドでundefinedを含む配列からundefinedを取り除くときの型定義

2023/11/29に公開
const samples: (string | undefined)[] = ["a", undefined, "b", undefined, "c"];

// 実際の戻り値は string[] だが、戻り値の型が (string | undefined)[] になってしまう
const filteredSample1 = samples.filter((sample) => typeof sample == "string");
console.log(filteredSample1); // ["a", "b", "c"] 

// 戻り値の型が string[] になる
const filteredSample2 = samples.filter(
  (sample): sample is string => typeof sample == "string",
);
console.log(filteredSample2); // ["a", "b", "c"]

Discussion