-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Closed
Labels
BugA bug in TypeScriptA bug in TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issue
Milestone
Description
Bug Report
NonNullable<null> was never in all cases previously, since 4.8 it's null when strictNullChecks: false. From reading the PR that changed the implementation of NonNullable I can't really tell if this is now expected or an oversight. If it's expected, maybe the blog post could be updated because I think this is a significant difference in behavior.
🔎 Search Terms
NonNullable never null
🕗 Version & Regression Information
- This changed between versions 4.7 and 4.8
⏯ Playground Link
Playground link with relevant code (same behavior for 4.7, but the implementation of NonNullable was different there)
💻 Code
type NonNullableNew<T> = T & {};
type NonNullableOld<T> = T extends null | undefined ? never : T;
type IsNullWithoutStrictNullChecks = NonNullableNew<null>;
type IsAlwaysNever = NonNullableOld<null>;🙁 Actual behavior
NonNullable<null> returns null with strictNullChecks: false
🙂 Expected behavior
NonNullable<null> always returns never
Tal500, gyurielf, gterras and zephimir
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issue