LoginSignup
0
0

More than 3 years have passed since last update.

typescriptで、filterの型推論でnullが除去できない

Last updated at Posted at 2020-10-04

typescript初心者です
filterの型推論で実装と差が出て、少し戸惑ったのでメモ

※追記 @sdkeiさんからご指摘いただき修正いたしました。ありがとうございました:bow:

問題

数値とnullが混在した配列からnullを除去することを考える

const numList = [0, 1, 2, null, 3].filter((x) => x !== null);

このときnumListの型推論ははnumber[]になって欲しいが、(number | null)[]になってしまう

解決法

T[].fillter(predicate: (value: T, index: number, array: T[]) => boolean): T[] の返り値の型はT[]型となるので、型推論できない
型アサーションを使って型を指定する

const numList = [0, 1, 2, null, 3].filter((x) => x !== null) as number[];

numListの型はnumber[]になる

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0