Microsoft/TypeScript
在 GitHub 查看Generic indexed access on type with optional properties doesn't include `undefined` in its constraint in `exactOptionalPropertyTypes`
Open
#57,023 创建于 2024年1月11日
Domain: flag: exactOptionalPropertyTypesHelp WantedPossible Improvement
仓库指标
- Star
- (48,455 star)
- PR 合并指标
- (平均合并 6天 17小时) (30 天内合并 9 个 PR)
描述
🔎 Search Terms
exactOptionalPropertyTypes optional generic indexed access undefined missing contextual constraint eopt
🕗 Version & Regression Information
- This changed in 5.3.0-dev.20230914
⏯ Playground Link
💻 Code
// @exactOptionalPropertyTypes: true
interface XStateConfiguration {
theme?: "auto" | "dark" | "light";
viewColumn?: "beside" | "active";
}
declare function getVscodeConfiguration<T>(section: string): T | undefined;
export function getConfiguration<Name extends keyof XStateConfiguration>(
name: Name,
): XStateConfiguration[Name] {
const genericAssignabilityTest: XStateConfiguration[Name] = undefined; // error
return getVscodeConfiguration(name); // error
}
const concreteAssignabilityTest: XStateConfiguration[keyof XStateConfiguration] = undefined; // ok
🙁 Actual behavior
undefined is not assignable to an indexed access like this in expression space
🙂 Expected behavior
I'd expect this to typecheck OK - just like the concrete example
Additional information about the issue
No response