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这个单词,换成其他的也可以
}
相关推荐
IT_陈寒7 分钟前
为什么你应该学习JavaScript?
前端·人工智能·后端
大龄秃头程序员13 分钟前
iOS冷启动监控Demo
前端
lightning_bug16 分钟前
Windows系统Docker+SpringBoot+H5+Mysql+Redis打包部署流程
后端·架构
光影少年17 分钟前
为什么 JavaScript 中 0.1 + 0.2 !== 0.3,如何让其相等?
前端·javascript·算法
SingleShadow18 分钟前
一文搞懂 CAN 总线:从入门到 STM32 应用
后端
码事漫谈27 分钟前
国庆七天,AI圈没一天消停
后端
掘金酱1 小时前
[稀土掘金 × 火山引擎] AI用量周榜冲刺赛|获奖名单公示
前端·人工智能·后端
montEvergreen1 小时前
RTMP 里的那根“连接线”:读一份 NetConnection 源码
后端·go
montEvergreen1 小时前
RTMP 握手:一场客户端与服务端的“暗号”对决
后端·go
qianmoq1 小时前
GrantForge 开源:基于 Spring Boot 构建统一权限平台,让权限管理不再从零开始
后端