やりたいこと
以下のコードのように filter を使った時、undefinedの型を取り除けないので、取り除けるようにしたい
array.filter((data) => !!data)
方法1(ダメな方法)
以下のように as でアサーションする
この場合、配列自体が undefined のケースを考慮できていない
array.filter((data) => !!data) as string[]]
方法2(良い方法)
Type Guardを使う
こちらは参考にさせていただいたサイトの方法で、配列の型から undefined を除外するのにNonNullable
というユーティリティ型を使用しています
array.filter(
(data): data is NonNullable<typeof data> => !!data
)
参考