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类型这一前提

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

如下官方源码

相关推荐
卸任4 小时前
Vibe coding工具使用心得
前端·ai编程
brien95 小时前
为什么模型标称 1M,Google Antigravity 聊到 256K 却突然失忆?我们给它做了个原生行内监控圆环
前端
修炼的dance5 小时前
录屏关键帧间隔多少合适?六档实测,2秒到10秒小了75.6%
前端
Lank_M5 小时前
关键帧从1秒拉到10秒,录屏小87.3%,摄像头小10.8%
前端
补码缩写5 小时前
用 ffprobe 拆录屏,八成字节在 29 个关键帧上
前端
百思不得小李5 小时前
一个复杂的动态表单是如何实现的
前端·设计模式
陈随易6 小时前
Cmder 停更 17 个月,2.0 支持 Windows Terminal
前端·后端·程序员
清晨Coding6 小时前
删了 Cookie 还能自动登录?Google系网站登录态自动恢复的原理分析
javascript
风骏时光牛马6 小时前
前沿视界
前端
kyriewen6 小时前
我扫了 814 个依赖,97 个还敢要 Node 10
前端·javascript·程序员