T extends object 是泛型约束的一种表现。
泛型约束简单点来说就是把泛型的具体化数据类型范围缩小
理解 T extends object:
extends表示具体的泛型类型只能是 object 类型, 某个变量如果能断言成 object类型[变量 as object ] , 那么这个变量的类型符合 T extends object 。
就是说该变量的类型可以是T的具体化类型
限制了泛型的类型,我们传了 number 就会报错
tip: 我们使用了 T extends object,传什么具体的泛型不会报错呢?
我们传的具体的泛型 能断言成 extends 后面的类型
也就是我们的具体的泛型 可以是 extends 后面的类型, 或者是extends 后面的类型的子集
class Container<T extends object>{
t!: T
show(): T {
console.log(this.t);
return this.t
}
}
let c = new Container<{}>()
let c = new Container<object>()