Microsoft/TypeScript
在 GitHub 查看No error on self-referencing type parameter of non-generic mapped type
Open
#62,176 创建于 2025年8月2日
BugDomain: Mapped TypesHelp Wanted
仓库指标
- Star
- (48,455 star)
- PR 合并指标
- (平均合并 6天 17小时) (30 天内合并 9 个 PR)
描述
🔎 Search Terms
mapped type circular self reference type parameter
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
💻 Code
type Test = keyof {
[P in keyof P]: unknown
};
declare const test: Test;
export function getTest() {
return test;
}
🙁 Actual behavior
[P in keyof P] doesn't error anyhow but it's clearly circular. Furthermore, the generated .d.ts here is:
export declare function getTest(): keyof P;
P leaked here and this is invalid
🙂 Expected behavior
I'd expect this to produce a circularity error and at the very least the generated declaration file should not contain a leaked type variable
Additional information about the issue
cc @jfet97 who originally mentioned part of this to me in a DM 😉