TypeScript 泛型笔记

141 阅读1分钟

泛型变量

 function log<T>(str: T): T {
   return str;
 }

泛型接口

  interface Demo<U> {
    (arg: U): U;
  }

泛型类

  class Demo<T> {
    zeroValue: T;
    add: (x: T, y: T) => T;
  }

泛型约束

  
   interface Lengthwise {
     length: number 
   }
   function log<T extends Lengthwise>(args: T): T {
     console.log(args.length)
     return args;
   }

在泛型约束中使用类型参数

  function getProperty<T>(obj: T, key: keyof T) {
    return obj[key]
  }
  let x = { a: 1, b: 2, c: 3, d: 4 };

  getProperty(x, "a"); // okay
  getProperty(x, "m"); // error: Argument of type 'm' isn't assignable to 'a' | 'b' | 'c' | 'd'.

在泛型里使用类类型

  function create<T>(c: {new(): T; }): T {
      return new c();
  }