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

TypeScript如何定义以数组元素为键、值为any的对象类型?

解决方案

要实现这个需求,你可以利用TypeScript的const断言和Record工具类型来完成,具体步骤如下:

  • 给数组添加as const断言,让TypeScript将数组元素识别为字面量类型的元组,而非宽泛的number[]类型,这样才能准确提取每个元素作为键类型。
  • 通过typeof arr[number]提取数组元素的联合类型,作为对象的键类型。
  • 用Record工具类型定义对象类型,指定键为上述联合类型,值为any。

完整代码示例:

// 用as const断言数组,锁定元素的字面量类型
const arr = [100, 4, 200, 1, 2] as const;

// 提取数组元素的联合类型作为键类型
type ArrKeys = typeof arr[number];

// 定义目标对象类型,键为数组元素,值为any
type TargetObj = Record<ArrKeys, any>;

// 现在obj会被严格检查,键必须是数组中的元素,值可以是任意类型
const obj: TargetObj = {
  100: '任意值',
  4: 123,
  200: true,
  1: null,
  2: {}
};

额外说明

  • 如果不需要保留原数组的可变性,直接用as const断言是最优选择;如果数组需要后续修改,但仍想基于初始元素定义键类型,可以单独定义一个字面量元组类型来复用。
  • 如果你希望值的类型不是any,可以把Record<ArrKeys, any>中的any替换成你需要的具体类型(比如string、number等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:24:52