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

TypeScript:如何为动态键值对象定义键为字符串值为字符串或数字的接口

TypeScript 动态键对象类型定义方案

你可以通过索引签名或者 TypeScript 内置的Record工具类型实现需求,有两种常用写法:


写法1:直接内联索引签名

直接在externalObject的类型定义里声明索引规则即可:

interface TestObject{
  // [key: string] 限定键为字符串类型,值限定为字符串或数字类型
  externalObject?: {
    [key: string]: string | number
  }
}

写法2:抽离复用类型(推荐多处使用的场景)

如果这个动态键值对象类型会在多个地方用到,可以单独抽成公共类型,搭配内置Record工具类写起来更简洁:

// Record<键类型, 值类型>是索引签名的语法糖,效果和手动写索引签名完全一致
type StringKeyStrOrNumVal = Record<string, string | number>

interface TestObject{
  externalObject?: StringKeyStrOrNumVal
}

补充说明

  • 如果后续需要扩展值的允许类型,只需要修改联合类型即可,比如要支持布尔值就把值类型改为string | number | boolean
  • 如果允许键为数字类型(JS 运行时数字键最终也会被转为字符串),可以把键类型改为string | number,对应写法为Record<string | number, string | number>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:24:05