Microsoft/TypeScript
Auf GitHub ansehenConditional type flow types missing in the template in mapped types with as clause
Open
#61.246 geöffnet am 22. Feb. 2025
Domain: Mapped TypesHelp WantedPossible Improvement
Repository-Metriken
- Stars
- (48.455 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)
Beschreibung
🔎 Search Terms
as clause renaming filtering mapped type conditional type flow
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
💻 Code
type AcceptNonNullable<T extends {}> = T;
type Test<T> = {
[K in keyof T as T[K] extends {} ? K : never]: AcceptNonNullable<T[K]>;
};
🙁 Actual behavior
AcceptNonNullable<T[K]> errors with:
Type 'T[K]' does not satisfy the constraint '{}'.
Type 'T[keyof T]' is not assignable to type '{}'.
Type 'T[string] | T[number] | T[symbol]' is not assignable to type '{}'.
Type 'T[string]' is not assignable to type '{}'.(2344)
🙂 Expected behavior
It doesn't have to error. It's known that T[K] has to extend {} at this position
Additional information about the issue
No response