-
Notifications
You must be signed in to change notification settings - Fork 13.1k
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
🔎 Search Terms
d.ts emit type error
🕗 Version & Regression Information
- This is a compile error when consuming a d.ts file emitting by the same version and configuration of TypeScript
- This repros in all versions I have tested (5.0.6, 5.1.6 and 5.3.2)
- Earlier version error when compiling the input file, so they could not run this scenario.
⏯ Playground Link
💻 Code
export function enumFromStrings<const Members extends readonly string[]>() {
type Part1 = {
[key in keyof Members as Members[key] extends string
? Members[key]
: never]: Members[key];
};
type Part2 = { [Property in keyof Part1]: Part1[Property] };
return Object.create(null) as Part2;
}🙁 Actual behavior
Emits d.ts:
export declare function enumFromStrings<const Members extends readonly string[]>(): { [Property in keyof { [key in keyof Members as Members[key] extends string ? Members[key] : never]: Members[key]; }]: { [key in keyof Members as Members[key] extends string ? Members[key] : never]: Members[key]; }[Property]; };Which errors:
Type 'Property' cannot be used to index type '{ [key in keyof Members as Members[key] extends string ? Members[key] : never]: Members[key]; }'.
🙂 Expected behavior
I expect TypeScript to either error when trying to emit a d.ts file, or generate a valid d.ts file it can consume without error.
Additional information about the issue
I have a workaround for the case where I hit this, so I'm mainly reporting this incase it helps TypeScript development.
RyanCavanaugh
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