TS 泛型

作者: 郑无穷大 | 来源:发表于2018-10-23 18:33 被阅读0次

    定义

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

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

    接口

    interface add<T> {
        (a: T,b: T): T;
    }
    
    let numberAdd: add<string> = (a2: string, b2: string): string => {
        return a2 + b2;
    }
    

    泛型约束

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

    function returnIt<T>(arg: T): T{
        console.log(arg.length) // error
        return arg;
    }
    添加约束之后
    
    interface HasLength{
        length: number
    }
    
    function returnIt<T extends HasLength>(arg: T): T{
        console.log(arg.length) // no error
        return arg;
    }
    // 类的泛型约束
    function create<T>(c: {new():T}) {
      return new c();
    }
    class Human{}
    
    let  jack = create<Human>(Human)
    

    相关文章

      网友评论

        本文标题:TS 泛型

        本文链接:https://www.haomeiwen.com/subject/jkvazftx.html