typescript中的泛型

泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。

在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。

通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验)

泛型函数

// 泛型拯救了 any  泛型可以支持不特定的数据类型
// T 代表泛型 
function getDatas<T>(value:T):T{
    return value;
}
console.log(getDatas<number>(123));
console.log(getDatas<string>("小牛"));


泛型类
 

// 泛型类
class MinClass<T>{
    public list:T[] = [];

    add(value:T){
        this.list.push(value);
    }

    min():T{
        var minNum = this.list[0];
        for(let i=0;i<this.list.length;i++){
            if(minNum>this.list[i]){
                minNum = this.list[i];
            }
        }
        return minNum;
    }
}
// 实例化传入的 number类型决定了 他真正的类型
var m1 = new MinClass<number>();
m1.add(1);
m1.add(2);
m1.add(3);
m1.add(4);
console.log(m1.min())


泛型接口

// 泛型接口
// 函数型接口泛型
interface ConfigFn{
    <T>(value:T):T;
}
var getFn:ConfigFn = function<T>(value:T):T{
    return value;
}
getFn<number>(1);

// 泛型接口
interface getData2<T>{
    (value:T):T;
}
var getData2 = function<T>(value:T):T{
    return value;
}
getData2<string>("小牛");

智一面免费前端工程师试题,点这里或者扫面下方二维码。

 

想了解更多前端知识,加入我们。