typescript 索引签名类型

ts索引类型简介

在TypeScript中,索引签名类型(Index Signature Type)是一种特殊的类型,它定义了对象中键的类型以及相应的值的类型。通过使用索引签名类型,我们可以表示一个对象,该对象的键可以是任意类型(如字符串、数字或符号),并且值也可以是任意类型。

ts索引类型

绝大多数情况下,我们都可以在使用对象前就确定对象的结构,并为对象添加准确的类型,但是工作中很多使用场景无法去顶对象中有那些属性(或者对象中可以出现任意多个属性).此时,就用到索引签名类型了

示例如下

tips:

  1. 使用key:string来约束该接口中允许出现的属性名称,表示只要是string类型的属性名称都可以出现在对象中
  2. 这样,对象obj中就可以出现任意多个属性,(比如a,b,c)
  3. key只是一个占位符,可以换成任意合法变量名称
  4. 对象的值使用number|string类型,只要是number或string类型的变量都能是对象的合法值
  5. 特别注意,js对象({})的键是string类型的

如下,当我尝试给对象obj的实例成员c赋值boolean类型变量时,报错

特殊的索引签名类型

在js数组中是一类特殊对象,特殊在数组的键(索引)是数值类型

并且,数组也可以出现任意多个元素,所以,在数组对于的泛型接口中,也用到了索引签名类型

tips:

  1. MyArray接口模拟原生数组接口,并使用n:number来作为索引签名的类型
  2. 该索引签名类型表示,只要是number类型的键(索引)都可以出现在数组中,或者说数组中可以有任意多个元素
  3. 同时也符合数组索引是number类型这一前提

其实官方定义的数组也就是上面接口的那种写法,

如下官方源码

相关推荐
米米商聊1 小时前
同名附件为什么被 Map 覆盖?重复键与一对多索引
前端·javascript
echome8882 小时前
Python 异常处理:try、else、finally 的正确搭配
开发语言·前端·python·异常处理·编程技巧
时间的情敌2 小时前
OpenLayers 实战|Vue3 + OpenLayers 完整工程案例(加载天地图、要素、弹窗、绘制、WFS)
前端·openlayers
陈随易2 小时前
下载神器!Motrix 停更三年后重写回归
前端·后端·程序员
前端的日常3 小时前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
计算机魔术师3 小时前
谷歌搜索广告踩刹车,AI广告成为救命稻草
前端
总要学点什么3 小时前
第81篇:数据可视化-PM2.5分布——让圆点的胖瘦替每座城市报出浓度
前端·信息可视化·echarts·cesium·空间分析
IT_陈寒3 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
hunter_0763 小时前
一次 iOS 真机签名 409 的完整排查:证书、设备、描述文件为什么总是"对不上"
前端
枣把儿3 小时前
开源!公众号排版+一键发布工具懒人版
前端