使用字面量去类型声明
- 可以使用
,
、;
、换行
作为分隔符分割属性 - 给字面量声明的对象赋值时,属性的
个数
和值的类型
都要符合定义时候的声明(除了 ? 可选属性和 索引签名 的情况)
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这个单词,换成其他的也可以
}