TypeScript的对象如何进行类型声明

使用字面量去类型声明

  • 可以使用,;换行作为分隔符分割属性
  • 给字面量声明的对象赋值时,属性的个数值的类型都要符合定义时候的声明(除了 ? 可选属性和 索引签名 的情况)
ts 复制代码
let person1: { name: string, age: number } // ,逗号作为分隔符
let person2: { name: string; age: number } // ;分号作为分隔符
let person3: { // 回车作为分隔符
  name: string
  age: number
}

?可选属性的定义

  • ?加在key后面,表示该属性为可选属性
ts 复制代码
let person1: { name: string, age?: number }

索引签名,任意数量的属性的定义

索引签名:允许定义对象可以具有任意数量的属性,这些属性的键和类型是可变的,常⽤于:描述类型不确定的属性,(具有动态属性的对象)。

  • [key: string]: any允许定义对象可以具有任意数量的属性,这些属性的键和类型是可变的。(其中的key表示形参可以用任何字符串替换)
ts 复制代码
// 限制person对象必须有name属性,可选age属性但值必须是数字,同时可以有任意数量、任意类型的其他属性
let person: {
  name: string
  age?: number
  [key: string]: any // 索引签名,完全可以不⽤key这个单词,换成其他的也可以
}
相关推荐
子兮曰19 小时前
OpenClaw入门:从零开始搭建你的私有化AI助手
前端·架构·github
Victor35619 小时前
https://editor.csdn.net/md/?articleId=139321571&spm=1011.2415.3001.9698
后端
吴仰晖19 小时前
使用github copliot chat的源码学习之Chromium Compositor
前端
1024小神19 小时前
github发布pages的几种状态记录
前端
Victor35619 小时前
Hibernate(89)如何在压力测试中使用Hibernate?
后端
灰子学技术21 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
阿蒙Amon21 小时前
TypeScript学习-第10章:模块与命名空间
学习·ubuntu·typescript
不像程序员的程序媛1 天前
Nginx日志切分
服务器·前端·nginx
北原_春希1 天前
如何在Vue3项目中引入并使用Echarts图表
前端·javascript·echarts
尽意啊1 天前
echarts树图动态添加子节点
前端·javascript·echarts