TS 泛型

定义

泛型就是用一个东西表示广泛的类型。

function returnIt(sth: T):T {
    return sth;
}
// 前面的是声明泛型!
let returnIt2: (sth: X) => X = returnIt;
// 上面俩种定义方法一样
let a = returnIt({ name: 'zheng',age: 18});
// 泛型,对比any就是保存了数据,一对一
function returnArray(array: T[]): T[] {  //T[] 可以写成Array
    return array;
}
// 数组的泛型,定义数组的类型
interface Human {
    name: string;
    age: number;
}
let b = returnArray([{name:'x',age:1},{name:'xx',age:2}])

let c:Array = ['a','b'];

接口

interface add {
    (a: T,b: T): T;
}

let numberAdd: add = (a2: string, b2: string): string => {
    return a2 + b2;
}

泛型约束

就是给泛型添加一些约束。

function returnIt(arg: T): T{
    console.log(arg.length) // error
    return arg;
}
添加约束之后

interface HasLength{
    length: number
}

function returnIt(arg: T): T{
    console.log(arg.length) // no error
    return arg;
}
// 类的泛型约束
function create(c: {new():T}) {
  return new c();
}
class Human{}

let  jack = create(Human)

你可能感兴趣的:(TS 泛型)