游乐场demo
差异:
A:
function<T extends { status: number }> () {}
B:
function<T = any> () {}
B
不访问T的属性,A
仅访问T的status
。
谢谢
答案 0 :(得分:0)
它的工作完全符合预期。除非您知道status
具有T
属性,否则您将无法访问类型为T
的变量的属性status
。
<T extends { status: number }>
意味着无论T
的具体值如何,它始终具有属性status
。
<T = any>
表示T
可以是任何东西。例如,您将如何访问status
的属性boolean
?那会导致运行时错误。因此,打字稿会给您一个编译时错误,以确保您不这样做。