TypeScript之索引签名

news/2024/5/20 3:17:58 标签: typescript, javascript, 前端, 开发语言, 索引签名, ts, node

1. 索引签名

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

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

2. 定义索引签名

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

数字索引签名

typescript">{
	[index: string]: type
}

字符串索引签名

typescript">{
	[index: number]: type
}

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

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

3. 索引签名的使用

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

字符串索引签名

typescript">interface MyString {
    [index: string]: string
}

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

数字索引签名

typescript">interface MyNumber {
    [index: number]: string
}

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

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

4. 注意事项

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


http://www.niftyadmin.cn/n/5125134.html

相关文章

一次做题感受

一次做题感受 昨天早上(也就是 10 10 10月 25 25 25日早上),我们打了一场模拟赛。有四道题,下午的时候我补完了三道,晚上准备补 T 4 T4 T4。 T 4 T4 T4是这道题,有一定难度。我能理解它的题解,…

FPGA设计时序约束七、设置时钟不确定约束

一、背景 在之前的时序分析中,通常是假定时钟是稳定理想的,即设置主时钟周期后按照周期精确的进行边沿跳动。在实际中,时钟是非理想存在较多不确定的影响,存在时延和波形的变化,要准确分析时序也需将其考虑进来&#x…

import javax.validation* 对输入时间 Date 进行校验的注解

Future:这个注解用于确保被标注的日期字段值必须在当前时间之后。例如,如果你有一个日期字段dateField,你可以使用Future对其进行注解,以约束其值必须在当前时间之后。 Past:这个注解用于确保被标注的日期字段值必须在…

『进阶之路』- 揭开ThreadLocal神秘面纱

阅读本文主要可以解决以下困惑: 什么是ThreadLocal,隔离线程的本地变量ThreadLocal的数据结构是怎么样的,为什么能实现线程隔离ThreadLocal的get和set方法ThreadLocal如何实现的线程安全?结合同步锁机制,空间换取时间…

APP分发-CDN加速原理

摘要 CDN的全称是(Content Delivery Network),即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点,使用户可以就近取得所需的内容,提高用户访问网站的…

nginx浏览器缓存和上流缓存expires指令_nginx配置HTTPS

1.nginx控制浏览器缓存是针对于静态资源[js,css,图片等] 1.1 expires指令 location /static {alias/home/imooc;#设置浏览器缓存10s过期expires 10s;#设置浏览器缓存时间晚上22:30分过期expires @22h30m;#设置浏览器缓存1小时候过期expires -1h;#设置浏览器不缓存expires …

【Linux前篇 】VMWare虚拟机安装与环境配置及远程连接 —— windows版

目录 一、操作系统 1.1 什么是操作系统 1.2 常见操作系统 1.3 个人版本和服务器版本的区别 1.4 Linux的各个版本 二、VMWare 虚拟机安装配置流程 2.1 安装 2.2 配置虚拟网络编辑器 三、安装配置 Windows Server 2012 R2 3.1 创建虚拟机 3.2 安装 Windows Server 2012…

深圳大学计软《程序设计基础》实验四 选择结构

A. 算术式子判断(选择) 题目描述 用户输入一个算术运算的式子,运算包括了、-、*、/、%,首先输出该式子,如果运算符不在这5种操作内,输出运算符错误的信息;如果式子是正确的,输出式…