当前位置: 首页 > news >正文

TypeScript之索引签名

1. 索引签名

在 TypeScript 中,索引签名是一种定义对象类型的方式,它允许我们使用字符串或数字作为索引来访问对象的属性。

索引签名最主要的作用就是允许我们动态地添加或访问对象的属性,通过使用索引签名,我们可以在编译时无法确定具体属性名称的情况下,仍然能够安全地操作对象的属性

2. 定义索引签名

索引签名通过以下语法进行定义:

数字索引签名

{[index: string]: type
}

字符串索引签名

{[index: number]: type
}

index表示索引的名称,字符串索引签名的index就类似对象的键,数字索引签名index就类似数组的索引下标,当然index的类型也可以定义为any

type表示索引对应的值的类型,可以是any | number | string | symbol

3. 索引签名的使用

下面我们通过实例来体会索引签名的使用:

字符串索引签名

interface MyString {[index: string]: string
}const str: MyString = {}
console.log(str);  // {}
// 使用索引签名的方式添加对象属性
str['name'] = 'zhangsan'
// 使用索引签名的方式访问对象属性
console.log(str['name']);  // zhangsan

数字索引签名

interface MyNumber {[index: number]: string
}const num: MyNumber = {}
console.log(num);  // {}
num[0] = 'zhangsan'
console.log(num[0]);  // zhangsan

值得注意的是,接口往往会约束对象变量所定义时的属性,而当使用索引签名并且接口内只定义了使用索引签名的属性时,使用此接口的对象变量可以定义为空,如上代码所示

4. 注意事项

当类型不匹配时,会报错
在这里插入图片描述
索引签名的顺序问题,对同一个属性多次赋值时,最后一次赋值将覆盖之前的值
在这里插入图片描述
可以使用readonly修饰符来限制索引签名的可写性
在这里插入图片描述

http://www.lryc.cn/news/207175.html

相关文章:

  • k8s-----24、亲和力Affinity
  • 860. 柠檬水找零
  • Flink将数据写入MySQL(JDBC)
  • react-typescript-demo
  • Alexon:在云原生环境中快速部署应用服务
  • 5G技术在职业教育领域的应用:产生巨变的技术
  • 【触想智能】工控一体机与5G物联网技术结合是未来发展趋势
  • LuatOS-SOC接口文档(air780E)--lvgl - LVGL图像库
  • LuatOS-SOC接口文档(air780E)--lora2 - lora2驱动模块(支持多挂)
  • WKWebView iOS17设置UserAgent
  • 持续集成部署-k8s-服务发现-Service
  • RocksDB基本架构与原理详解
  • ArcGIS笔记12_ArcGIS搜索工具没法用?ArcGIS运行很慢很卡?
  • 【VictoriaMetrics】单机版配置
  • 【C语言】strcpy()函数
  • C++基础算法⑦——信奥一本通递归算法(放苹果、求最大公约数问题、2的幂次方表示、分数求和、因子分解、判断元素是否存在)
  • uni-app医院智能导诊系统源码
  • 启动jar时指定nacos配置
  • linux安装vscode vscode使用 创建项目并运行
  • 如何解决数据倾斜
  • 宏定义实现offsetof
  • YOLOv5— Fruit Detection
  • (PyTorch)PyTorch中的常见运算(*、@、Mul、Matmul)
  • cmd 命令关闭占用端口
  • PG14启动报错“max_stack_depth“ must not exceed 7680kB
  • BES2700 蓝牙协议之RFCOMM通道使用方法
  • 简单介绍一下迁移学习
  • PHP 同城服务共享茶室小程序系统是如何实现的?
  • JavaScript对象与原型
  • 论文解读:《DataPype:用于计算机辅助药物设计的全自动统一软件平台》