TypeScript泛型类和约束

本节课我们来开始了解 TypeScript 中泛型约束的功能和泛型类的使用。

一.泛型约束

1. 泛型也会有无法检查通过所有类型都具有同一个属性的问题,比如 .length
function info(msg : T) : T {
// 类型检查无法通过所有类型的.length 属性
console.log(msg.length)
return msg
}
PS:这里一样也会报错,我们可以使用之前的断言,但如果不需要其它类型时也可以使用约束;

2. 使用泛型约束,就是限制任何传入的类型具有的属性,比如 .length
// 泛型约束
interface Ilength {
length : number
}
function info(msg : T) : T {
// 继承了约束接口后,具有 length 属性的检查通过
console.log(msg.length)
return msg
}
console.log(info('Mr.Lee'))

二.泛型类
1. 泛型类的使用基本和之前讲解的内容一致,示例如下:
class Person {
_name : T
_age : P
constructor(name : T, age : P) {
this._name = name
this._age = age
}
get name() : T {
return this._name
}
get age() : P {
return this._age
}
}
let p = new Person('Mr.Lee', 100)
console.log(p.name)
console.log(p.age)
PS:泛型只支持实例部分,不支持静态部分,也就是 static 关键字无法支持;

你可能感兴趣的:(JavaScript,typescript)