对象
对象类型的最简单声明方法,就是使用大括号表示对象,在大括号内部声明每个属性和方法的类型。
typescript
const zhangSan: {
name: string,
age: number,
gender: boolean
} = {
name: '张三',
age: 1,
gender: true
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
注意
一旦声明了类型,对象赋值时,就不能缺少指定的属性,也不能有多余的属性。
可选属性
typescript
const zhangSan: {
name: string,
age?: number,
gender?: boolean
} = {
name: '张三',
}
1
2
3
4
5
6
7
2
3
4
5
6
7
检查
使用可选属性时应先检查该属性是否为 undfined
否则
如果没有定义会成为 undifined
typescript
const zhangSan: {
name: string,
age?: number,
gender?: boolean
} = {
name: '张三',
}
// Hi I'm 张三, My age undefined
console.log(`Hi I'm ${zhangSan.name}, My age ${zhangSan.age}`)
// Hi I'm 张三, My age 不告诉你
console.log(`Hi I'm ${zhangSan.name}, My age ${zhangSan.age ?? '不告诉你'}`)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
解构赋值
解构赋值的类型写法,跟为对象声明类型是一样的。
typescript
const zhangSan: {
id: string,
age: number,
gender: boolean
} = {
id: '张三',
age: 1,
gender: false
}
const {id, age, gender}: {
id: string,
age: number,
gender: boolean
} = zhangSan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
为解构赋值定义默认值
typescript
const zhangSan: {
id?: string,
age?: number,
gender: boolean
} = {
age: 1,
gender: false
}
const {id = '123', age = 123, gender}: {
id?: string,
age?: number,
gender: boolean
} = zhangSan
console.log(id, age, gender)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
对象方法
typescript
const zhangSan: {
firstName: string
lastName: string
fullName: () => string
} = {
firstName: '张',
lastName: '三',
fullName: function () {
return `${this.firstName + this.lastName}`
}
}
console.log(zhangSan.fullName())
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13