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这个单词,换成其他的也可以
}
相关推荐
华玥作者16 小时前
[特殊字符] VitePress 对接 Algolia AI 问答(DocSearch + AI Search)完整实战(下)
前端·人工智能·ai
Mr Xu_16 小时前
告别冗长 switch-case:Vue 项目中基于映射表的优雅路由数据匹配方案
前端·javascript·vue.js
qq_2975746717 小时前
【实战教程】SpringBoot 实现多文件批量下载并打包为 ZIP 压缩包
java·spring boot·后端
前端摸鱼匠17 小时前
Vue 3 的toRefs保持响应性:讲解toRefs在解构响应式对象时的作用
前端·javascript·vue.js·前端框架·ecmascript
lang2015092817 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
好家伙VCC18 小时前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
未来之窗软件服务18 小时前
未来之窗昭和仙君(六十五)Vue与跨地区多部门开发—东方仙盟练气
前端·javascript·vue.js·仙盟创梦ide·东方仙盟·昭和仙君
嘿起屁儿整18 小时前
面试点(网络层面)
前端·网络
VT.馒头19 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
phltxy19 小时前
Vue 核心特性实战指南:指令、样式绑定、计算属性与侦听器
前端·javascript·vue.js