类型推断

  • 可根据变量定义时的值,推断出该变量的类型 ```typescript let name = ‘zxc’ // 可以推断出 name 的类型为string let arr = [1, ‘a’] // 可以推断出 arr 的类型为联合类型 Array (number | string)
  1. <a name="YXHx8"></a>
  2. ### 类型的兼容性
  3. <a name="azlNJ"></a>
  4. #### 接口兼容性
  5. - 比如 声明一个接口,我们定义的变量的类型就是该接口,赋值时要满足接口中定义的成员变量
  6. ```typescript
  7. interface InfoInterface {
  8. name: string;
  9. info: {
  10. age: number,
  11. }
  12. }
  13. let infos: InfoInterface = { name: 'zxc', info: { age: 18} }

函数的兼容性

参数个数

  • 参数个数要小于等于定义的函数类型中定义的参数个数 ```typescript const arr = [1, 2, 3] arr.forEach((items, index, array) => {

})

arr.forEach((items) => { // 这样也可以使用 })

  1. **参数类型**
  2. - 参数类型要一致
  3. **可选参数/剩余参数**
  4. - 如果想要同时操作多个参数,或者并不知道会有多少参数传递进来的时候,我们可以使用剩余参数。
  5. - 剩余参数会被当做个数不限的可选参数,[参考链接](https://blog.csdn.net/weixin_46618182/article/details/113530735)
  6. ```typescript
  7. function add(...arg: number[]): number {
  8. let sum = 0;
  9. for(let i = 0; i < arg.length; i++) {
  10. sum += arg[i];
  11. }
  12. return sum;
  13. }
  14. let result = add(1, 2, 3);
  15. let result_ = add(1, 2, 3, 4) // 也可以

返回值类型

函数重载

image.png

类的兼容性

  • 比较两个值,他们的类类型是否相等,比较的是 该类创建的实例(包括实例上的属性),类里面的静态(static)成员变量和 constructor 函数不比较

image.png

泛型的兼容性

  1. interface Data<T> {
  2. data: T
  3. }
  4. let data1 = Data<number>;
  5. let data2 = Data<string>;