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

TypeScript中用[key in Keys]映射类型时为何不允许定义额外键

原因说明

你遇到的报错本质是TypeScript语法规则限制,和重复键冲突检测没有关系:

  • [key in 联合类型] 是映射类型专属语法,它本身是独立的类型定义结构,不能和普通的显式键定义直接写在同一个{}包裹的对象类型字面量里。
  • 你之前写的单独的Foo类型是纯映射类型,符合语法规范所以不会报错;而Bar和Jar把显式键extraKey和映射类型语法塞到了同一个对象类型块里,违反了语法要求才会报错。

正确实现方式

如果需要同时包含映射生成的键和自定义的额外键,用交叉类型合并两个类型即可:

type Keys = "1" | "2" | "3" | "4" | "5";

// 交叉类型合并,正常工作
type Bar = { extraKey: string } & { [key in Keys]: string };

内容的提问来源于stack exchange,提问作者Umesh Kadam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:45:04