[[型述語 (TypeScript)|型述語]]を推論する[[TypeScript]]の機能。
```ts
declare let numberOrUndefines: (number | undefined)[];
const numbers1 = numberOrUndefines.filter((x) => x !== undefined);
// ^? number[]
const numbers2 = numberOrUndefines.filter((x) => x != null);
// ^? number[]
const numbers3 = numberOrUndefines.filter((x) => x);
// ^? (number | undefined)[]
```
`number1`と`number2`はラムダ式が単なる`boolean`を返す関数でなく、`x is number`を含む[[型述語 (TypeScript)|型述語]]であると推論されるため、`(number | undefined)[]`ではなく`number[]`と推論される。
## MOC
- 📒**関連**
- [[型述語推論可能な条件 (TypeScript)|型述語推論可能な条件]]
- 📜**アクティビティ**
- 📝**トラブルシューティング**
- [[📝TypeScriptで!!を使ったラムダ式の結果が型述語推論されない]]