You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:35:18