Microsoft/TypeScript
Distributive conditional types can't distribute over `NoInfer` types wrapping a union
オープン
#61,076 opened on 2025/01/29
Domain: Conditional TypesHelp WantedPossible Improvement
Repository metrics
- Stars
- (108,860 個のスター)
- PR merge metrics
- (PR metrics pending)
説明
🔎 Search Terms
noinfer union distributive conditional distribution
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
💻 Code
type FooEvent = { type: "FOO" };
type BarEvent = { type: "BAR" };
type Input = FooEvent | BarEvent;
type Result = Extract<Input, FooEvent>;
// ^? type Result = { type: "FOO"; }
type Result2 = Extract<NoInfer<Input>, FooEvent>;
// ^? type Result2 = never
🙁 Actual behavior
Result2 gets computed as never
🙂 Expected behavior
Result2 should get computed as { type: "FOO"; }
Additional information about the issue
This is repro for the core problem behind this incorrect behavior: TS playground