TypeScript中判断含undefined元组索引时的异常行为
元组场景下
MaybeUndefinedKeys类型的异常问题 我编写了一个类型MaybeUndefinedKeys<T>,用于识别对象中值为可选类型或与undefined联合、但并非**必须为undefined**的键,实现代码如下:
type MaybeUndefinedKeys<T> = { [K in keyof T]-?: undefined extends T[K] ? T[K] extends undefined ? never : K : never; }[keyof T];
这个类型在对象场景下工作正常,但测试元组时出现了不符合预期的行为:
let x: MaybeUndefinedKeys<[0, 1?]> = '1'; // @ts-expect-error 预期此处报错,但实际未报错 x = 2;
TSC认为x可以被赋值为数值字面量2,尽管目标元组仅包含索引0和1,且预期返回类型应为字符串'1',甚至IntelliSense还将2列为有效值。请问这是我的类型实现有误,还是TypeScript编译器的bug?
内容的提问来源于stack exchange,提问作者dx_over_dt
相关产品推荐
相关产品推荐

