以下步骤似乎很简单,但是我不确定是什么导致了错误。我已经逛了很久,但似乎找不到答案。
class MyClass<T > {
property: T = 5 // Error Here: Type '5' is not assignable to type T
}
const tester = new MyClass<number>() // OK
const numberValue: number = tester.property // OK
const stringValue: string = tester.property // Error as expected
我认为T可以从“属性”中推断为数字。我觉得过去曾经工作过,但不确定。
Typescript playground with examples
更新
这些定义也有相同的错误。
class MyClass<T extends number> {
property: T = 5 // Error Here: Type '5' is not assignable to type T
}
class MyClass<T extends object> {
property: T = {} // Error Here: Type '{}' is not assignable to type T
}
答案 0 :(得分:2)
这应该是行不通的。无论您在通用类或方法的定义中编写的内容如何,对于可能使用该类或方法的T
的 all 个可能值均有效。如果有人进行property: T = 5
从而new MyClass<string>()
为T
,则分配string
无效。推断仅在您使用通用类或方法时发生。