1️⃣ 类型兼容性

2️⃣ 基本类型:TS 中要求完全匹配

  1. let a: number = 10;

2️⃣ 对象类型:鸭子变型法

鸭子变型法:像鸭子一样走路、游泳和嘎嘎叫的鸟就是鸭子。赋值的类型只要满足这些条件就是兼容的。

  1. interface a {
  2. name: string
  3. age: number
  4. }
  5. let obj1 = {
  6. name: 'chen',
  7. age: 25,
  8. job: 'javaScript'
  9. }
  10. let obj2 = {
  11. name: 'chen',
  12. job: 'javaScript'
  13. }
  14. let b: a = obj1; // b 约束为类型 a,赋值为 obj1,因为 obj1 中满足了 a 的 name 和 age 所以是可以成功的,可以多但不可以少。
  15. console.log(b);
  16. // 类型 "{ name: string; job: string; }" 中缺少属性 "age",但类型 "a" 中需要该属性。ts(2741)
  17. let c: a = obj2 // c 约束为类型 a,赋值为 obj2,因为 obj2 中不满足 0a 的 name 和 age 所以是不成功的,可以多但不可以少。
  18. console.log(c);

image.png

1️⃣ 函数类型

参数:传递给目标函数的参数可以少,但不可以多。
返回值:要求返回必须返回,不要求返回可以随意。