TypeScript学习笔记-泛型

/**
 * 
 * 泛型的基本表示方法
 */
function fn<T>(prop:T):T{
  return prop;
}
//调用
let output=fn<string>('string');
//同样可以利用类型推论来判断类型
let output2=fn('string');
//返回类型为T的数组
function array<T>(prop:T[]) : T[]{
  console.log(prop.length);
  return prop;
}

/**
 * 泛型类型
 * ???泛型接口
 */
let f: <U>(args:U) => U = fn
//使用对象字面量调用
let o:{<U>(args:U):U} = fn

/**
 * 泛型类
 */
class GenericNumber<T>{
  zeroValue:T;
  add:(x:T,Y:T) => T;
}

let myGenericNumber=new GenericNumber<number>();

myGenericNumber.zeroValue=0;
myGenericNumber.add=function(x:number,y:number){
  return x+y;
}

/**
 * 泛型约束
 */
interface lengthWise{
  length:number;
}

function loggingIdentity<T extends lengthWise>(args:T):T{
  return args;
}
/**
 * 泛型中使用类类型
 * ???
 */

 function create<T>(c:{new():T}):T{
   return new c();
 }
原文地址:https://www.cnblogs.com/goOtter/p/9765836.html