1️⃣ 泛型

泛型:是指附属于函数,类,接口,类型别名之上的类型
泛型相当于是一个类型变量,在定义时,无法预先知道具体的类型,可以使用变量代替,只有在调用时,才能确定它的类型
image.png

1️⃣ 使用泛型

在函数,类型别名,接口,类后加 **<泛型名字>** ,泛型的名字可以随便起,一般常用的是命名为 **T**

2️⃣ 在函数中使用泛型

image.png

3️⃣ 函数中的泛型推导

当函数和函数参数使用了泛型,只要在参数中确定类型就不用在调用函数时传递类型了。
image.png

2️⃣ 在类型别名,接口,类中使用泛型

  1. // 类型别名
  2. type Callback<T> = (a: T, b: T) => Boolean
  3. function fun(callback: Callback<string>) { }
  4. // 接口
  5. interface obj<T> {
  6. name: T
  7. job: T
  8. }
  9. let in1: obj<string>
  10. in1 = {
  11. name: 'chen',
  12. job: '前端'
  13. }
  14. let in2: obj<number>
  15. in2 = {
  16. name: 10,
  17. job: 20
  18. }
  19. // 类
  20. class cla<T> {
  21. name: T
  22. constructor(name: T) {
  23. this.name = name
  24. }
  25. }

1️⃣ 泛型约束

泛型约束:用于实现泛型的取值。
image.png
image.png

1️⃣ 多泛型

image.png