【发布时间】:2018-08-31 23:13:53
【问题描述】:
我注意到,在实现泛型接口(或类)并明确说明这些泛型的类型时,不会推断子类中函数的参数类型。
interface MyInterface<T> {
open(data: T): void
}
class MyClass implements MyInterface<string> {
open(data) {
// Data should be string, but is any
}
}
目前正确的做法如下:
open(data: string) {
...
}
但是,这迫使我多次输入该类型,这似乎是不必要的。以下会产生错误(这是预期的):
open(data: number) {
...
}
任何不是字符串的类型都会出错,所以编译器不应该能够推断出该类型是字符串吗?
【问题讨论】:
-
这是 Typescript 本身的问题还是您使用的 IDE/插件的问题?
-
但返回值 is 检查:
open(): T由于return 7给出错误。很有趣。 -
我猜这是 Typescript 本身的问题。尝试在 Playground 中粘贴代码:typescriptlang.org/play/index.html
-
已知问题,见github.com/Microsoft/TypeScript/issues/16590和github.com/Microsoft/TypeScript/issues/1373,最后一个标记为“设计限制”和“无法修复”
标签: typescript types type-inference inference