泛型的概念

  1. 泛型:任意类型
  2. // 泛型好处:既有类型检查,又可以传入任意类型
  3. function getMsg<T>(msg: T) {
  4. console.log(msg);
  5. }
  6. getMsg<string>('hello');
  7. getMsg<number>(123);
  8. // 报错
  9. getMsg<string>(123);
  1. /*
  2. 在定义函数或是类时,如果遇到类型不明确就可以使用泛型
  3. */
  4. function fn<T>(a:T):T {
  5. return a;
  6. }
  7. // 可以直接调用具有泛型的函数
  8. // Ts会自动推断
  9. fn(10); // 不指定泛型,Ts可以自动对类型进行判断
  10. fn<string>('hello'); // 指定泛型
  11. function fn2<T, K>(a: T, b: K): T{
  12. console.log(b);
  13. return a;
  14. }
  15. fn2<number, string>(123, 'zhangsan')
  16. interface Inter{
  17. length: number;
  18. }
  19. function fn3<T extends Inter>(a:T):number {
  20. return a.length;
  21. }
  22. class MyClass<T>{
  23. name: T;
  24. constructor(name: T) {
  25. this.name = name;
  26. }
  27. }
  28. const mc = new MyClass<string>('zhangsan')