为什么打字稿泛型T无法正常工作?

时间:2020-11-11 04:32:49

标签: typescript generics

游乐场demo

差异:

A:

function<T extends { status: number }> () {}

B:

function<T = any> () {}

B不访问T的属性,A仅访问T的status

谢谢

1 个答案:

答案 0 :(得分:0)

它的工作完全符合预期。除非您知道status具有T属性,否则您将无法访问类型为T的变量的属性status

<T extends { status: number }>意味着无论T的具体值如何,它始终具有属性status

<T = any>表示T可以是任何东西。例如,您将如何访问status的属性boolean?那会导致运行时错误。因此,打字稿会给您一个编译时错误,以确保您不这样做。