类型的兼容性
B -> A,将 B 赋值给 A ,如果能完成赋值,则 B 和 A 类型兼容。
鸭子辨型法(子结构辨型法):
目标类型需要某一些特征,赋值的类型只要能满足该特征即可。
TS如何进行类型兼容:
- 基本类型:完全匹配。
- 对象类型:鸭子辨型法。
类型断言:编译结果中没有类型断言。
interface Duck {
sound: "嘎嘎嘎";
swin(): void;
}
let person = {
name: "伪装成鸭子的人",
age: 11,
sound: "嘎嘎嘎" as "嘎嘎嘎", // 类型断言:前边是数据,as是断言,后边是类型
swin() {
console.log(this.name + "正在游泳,并发出了" + this.sound + "的声音");
}
}
let duck: Duck = person;
当直接使用对象字面量赋值的时候,会进行更加严格的判断。因此,将对象直接赋值给 duck 时会出现以下报错:
函数类型:
- 参数: 传递的给目标函数的参数可以少,但不可以多。
- 返回值:要求返回必须返回,类型必须匹配。不要求返回时,随意。