Typescript:泛型类类型推理



下面的内容看起来很简单,但我不确定是什么导致了错误。我四处寻找了很长一段时间,但似乎找不到答案。

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可以从"property"中推断为数字。我觉得过去工作过,但我不确定。

打字游戏场示例


更新

这些定义也有相同的错误。

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
}

这本不应该奏效。无论您在泛型类或方法的定义中写什么,都必须对该类或方法可能使用的T的所有可能值有效。如果有人执行new MyClass<string>()使得Tstring,则分配property: T = 5无效。只有当使用泛型类或方法时,才会发生推理。

最新更新