定义对象类型的方式(分三种)
// 匿名、接口、类型别名
const obj: {name: string} = {name: 'jim'}
interface Myobj {
name: string
age: number
}
type Myobj = {
name: string
age: number
}
对象中的三种特殊属性定义
interface Point {
// 可选属性
name?: string,
// 只读属性,当前option不可以修改,但是option.money可以修改
readonly option: {
money: string
} ,
// 索引签名,定义在索引签名之下的实名属性要兼容索引签名
[index: number]: string,
[props:string]: string,
}
对象类型的扩展和交叉
interface A {a: string}
interface B {b: number}
// 扩展对象类型
interface C extends A,B {}
// 获得交叉类型
type D = A & B
泛型对象
interface Box<T> {content: T}
type Box<T> = {content: T}
const box: Box<string> = {content: 'jim'}