Skip to content

NonNullable doesn't work on mapped types instantiated with null/undefined #57151

@Andarist

Description

@Andarist

🔎 Search Terms

mapped nonnullable empty object null undefined instantiation

🕗 Version & Regression Information

⏯ Playground Link

https://www.staging-typescript.org/play?ts=5.4.0-dev.20240124#code/C4TwDgpgBAYg9nAPAFQHxQLxQHJwHbYCuANsQIYBGxEiA3lANoDSUAlnlANYQhwBmUZAF0AXIOZCoAX1QBYAFALQkKACUIAZxLBMsBIjwliqIA

💻 Code

type Foo<T> = NonNullable<{ [K in keyof T]: T[K] }>

type Result = Foo<null>

🙁 Actual behavior

Result is of type null

🙂 Expected behavior

Result should be of type never

Additional information about the issue

This likely gets closed as a design limitation like the one here: #56644

Metadata

Metadata

Assignees

Labels

Design LimitationConstraints of the existing architecture prevent this from being fixed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions