- Notifications
You must be signed in to change notification settings - Fork13.2k
Closed
Description
Bug Report
🔎 Search Terms
- generic can't be narrowed
- narrow nonnullable generic
🕗 Version & Regression Information
- This is the behavior in every version I tried from 4.6.2 to 4.0.5 and nightly v4.7.0-dev.20220408
⏯ Playground Link
Playground link with relevant code
💻 Code
functiontest<Textendsstring|null>(input:T):NonNullable<T>{if(!input){// this should narrow `input` to `T extends string`thrownewError();}returninput;// type error}
🙁 Actual behavior
Type error
Type 'T' is not assignable to type 'NonNullable<T>'. Type 'string | null' is not assignable to type 'NonNullable<T>'. Type 'null' is not assignable to type 'NonNullable<T>'.🙂 Expected behavior
TypeScript should know I've narrowed the generic type to satisfied theNonNullable type.
I came across#43183 which I was expecting to also address this scenario.