2020-10-12 TypeScript学习第二弹

泛型
参考资料

什么叫泛型?有什么作用?
TypeScript 中文手册-泛型(generic)

理解

泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型

1.比如下面这段代码,当对于参数和返回值没有特殊限制,只要求两者类型一致的时候,用泛型即可限制。

// 参数和返回值类型 相同 泛型 <T>表达函数中的参数类型一致
function generic<T>(arg:T):T{
    console.log(arg);
    return arg
}
generic('string')

2.下面这段代码,使用泛型变量限制了数组

// 让参数和返回值都是一种类型的数组 如纯数字或者含对象
function loggingIdentity<T>(arg: Array<T>): Array<T> {
    console.log(arg.length);  // Array has a .length, so no more error
    return arg;
}

loggingIdentity([4])
泛型类

泛型类看上去与泛型接口差不多。 泛型类使用(<>)括起泛型类型,跟在类名后面。

class generic<T> {
    arg:T;
    add(x:T,y:T){
        return T
    };
}

let Generic=new generic<Number>()
Generic.arg=4  

该泛型类规定了类型一致,实例化的时候用<Number>进行限定

泛型约束

注意<T extends Lengthwise>表示泛型受到了Lengthwise接口的约束,即T必须拥有length属性

interface Lengthwise {
    length: number;
}

function loggingIdentity<T extends Lengthwise>(arg: T): T {
    console.log(arg.length);  // Now we know it has a .length property, so no more error
    return arg;
}
loggingIdentity(3);  // Error, number doesn't have a .length property

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值