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这个单词,换成其他的也可以
}
相关推荐
一只叁木Meow2 小时前
DOM元素尺寸属性详解:offset、client、scroll
前端
原则猫2 小时前
单例模式工程运用
前端·设计模式
degree5202 小时前
使用 Web Vitals 量化网页性能:从 LCP、FID 到 CLS 实战优化
前端
水晶浮游2 小时前
💥 半夜3点被拉群骂?学会Sentry监控后,现在都是后端背锅了
前端
Olrookie2 小时前
若依前后端分离版学习笔记(十九)——导入,导出实现流程及图片,文件组件
前端·vue.js·笔记
用户5965906181342 小时前
Moq 是mock库
后端
用户5965906181343 小时前
AutoMappe包及用法
后端
Yefimov3 小时前
DPDK:从网络协议栈的角度来观察微内核
后端·网络协议
用户68545375977693 小时前
# 🚀 Java高级面试题:Spring框架原理
后端