Typescript:通用类类型推断

时间:2018-07-29 04:55:30

标签: typescript class generics inference

以下步骤似乎很简单,但是我不确定是什么导致了错误。我已经逛了很久,但似乎找不到答案。

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
}

1 个答案:

答案 0 :(得分:2)

这应该是行不通的。无论您在通用类或方法的定义中编写的内容如何,​​对于可能使用该类或方法的T all 个可能值均有效。如果有人进行property: T = 5从而new MyClass<string>()T,则分配string无效。推断仅在您使用通用类或方法时发生。