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

如何以类型安全的方式将元组用作TypeScript的Map键?

实现支持任意长度元组作为键的TypeScript字典(类似Python dict)

在TypeScript中,Map无法直接将数组或元组用作键——因为这类引用类型是按引用地址而非值内容进行比较的。常见的临时解决方法是把元组序列化为字符串(比如用JSON.stringify()),再用这个字符串作为Map的键,但这种方式有明显缺陷:丢失类型信息。

比如这段代码:

type Value = string | number;
const map = new Map<string, number>();
map.set(JSON.stringify(["a", 1, "4"]), 1);
for (const entry of map.entries()) {
  // 键的类型完全丢失
  // 就算手动把它强转为Value数组也没用,无法区分元素原本的类型
  // 比如这里的1是数字,"4"是字符串,解析后虽能得到对应值,但类型系统无法追踪这种区别
  const key = JSON.parse(entry[0]); 
}

反观Python的dict,可以直接用元组作为键:元组是按值比较的,同时能完整保留每个元素的类型信息,完全不存在上述问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:33:19