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这个单词,换成其他的也可以
}
相关推荐
神奇的程序员1 小时前
开发了一个管理本地开发环境的软件
前端·flutter
XiYang-DING2 小时前
HTML 核心标签
前端·html
Csvn2 小时前
技术选型方法论
前端
Csvn2 小时前
前端架构演进:从页面到平台的十年变革
前端
李伟_Li慢慢2 小时前
ShaderToy-山峦+蓝天+白云
前端·webgl
小码哥_常2 小时前
告别MySQL!大厂集体转投PostgreSQL,到底藏着什么玄机?
后端
小码哥_常2 小时前
Android字体字重设置全攻略:XML黑科技+Kotlin动态实现,告别.ttf臃肿
前端
刀法如飞3 小时前
Go数组去重的20种实现方式,AI时代解决问题的不同思路
后端·算法·go
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题】【Java基础篇】第30题:JDK动态代理和CGLIB动态代理有什么区别
java·开发语言·后端·面试·代理模式
言萧凡_CookieBoty4 小时前
AI 编程省 Token 实战:从 Spec、上下文工程到模型分层的降本策略
前端·ai编程