类型断言VS类型声明

2/25/2022 ts

类型声明比类型断言更加严格

# 类型断言

interface Animal {
	name: string
}

interface Cat {
	name: string
	run(): void
}

let tom: Animal = {
	name: 'tom'
}

let cat = tom as Animal // 成立
1
2
3
4
5
6
7
8
9
10
11
12
13
14

接口Animal和接口Cat相当于类的继承关系class Cat extend Animal,因为父类可以断言为子类,所以成立

# 类型声明

interface Animal {
	name: string
}

interface Cat {
	name: string
	run(): void
}

let tom: Animal = {
	name: 'tom'
}

let cat: Cat = tom // 不成立,Cat类型中的run在Animal类型中不存在,不能完成赋值,类型不兼容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
最后更新时间: 12/4/2022, 1:44:46 PM