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

TypeScript Interface中属性可以使用包含索引签名的对象类型吗?

TypeScript索引签名类型与Origin接口用法解答

{ [key: string]: any }的具体含义

这个写法是TypeScript的**索引签名(Index Signature)**语法,用来定义键名不固定的对象类型,和数组没有关联,方括号仅为该语法的固定标识:

  • [key: string]约定该对象的所有键(key)必须为字符串类型,其中key是自定义的形参名,可以替换成任意合法变量名
  • 末尾的any约定所有键对应的值(value)可以为任意类型
    这种类型通常用在无法提前枚举所有对象键名的场景,比如动态配置、后端返回的未做字段映射的透传对象等。

数组能否作为对象的key

JavaScript原生规则中,普通对象的键仅支持string和Symbol两种类型。如果主动传入数组作为对象键,运行时会自动调用数组的toString()方法转换为字符串后再作为键存储,比如传入[1,2,3]作为键,实际生效的键是字符串"1,2,3"。
因此TypeScript不支持直接声明数组类型的对象索引,就算硬写也不会在运行时生效,最终还是会转为字符串处理。

符合Origin接口定义的合法示例

// 示例1:同时携带areaNum和open属性
const demo1: Origin = {
  areaNum: 12,
  open: {
    "showFilter": true,
    "currentPage": "dashboard",
    "userConfig": {
      theme: "dark",
      noticeSwitch: false
    },
    "tags": ["admin", "operator"]
  }
}

// 示例2:仅携带open属性(因为areaNum是可选属性)
const demo2: Origin = {
  open: {
    "disabled": true,
    "extraData": null
  }
}

内容的提问来源于stack exchange,提问作者Julio Rodríguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:36:01