[[型述語 (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で!!を使ったラムダ式の結果が型述語推論されない]]