感觉老师对于 extend 成立条件的描述有误
来源:8-12 【 TS 泛型类+泛型约束组合应用】通用分页类优化【通用类,移植即用】

坡村小码哥
2022-04-05
笔记原文
某个变量如果能断言成 objecet 类型 [ 变量 as object ],那么这个变量的类型就符合
T extends object
问题
个人感觉这个说法不严谨,之前章节提到断言的第一种情况就是 父类和子类 可以相互断言,子类可以断言成父类,父类也可以断言成子类,例如:
function foo(arg: any) {
const obj = arg as object; // 这里我们吧 any 类型的变量断言成了 object
}
依照笔记中的说法,难道 any 符合 T extends object 吗?所以应该是: 如果 T 是 object 的子集,那么 T 才符合 T extends object
写回答
1回答
-
路过同学了解下--老师新课程全栈当当书城优惠倒计时2天,截至2022年7月19号平台将课程恢复原价,有意向同学趁早出手【此条非问题解答,见谅!】
这个说法非常严谨,描述完全正确,同学请记住: any是任何类型的父类类型,也是任何类型的子类类型,所以any 即是object的父类,也是object的子类,可以互相断言 。测试下面的例子,就明白了。
type TypeInvoke<T, U> = T extends U ? T : number
type result = TypeInvoke<any, object> //any
type result2 = TypeInvoke<object, any> //object
112022-04-06
相似问题