【发布时间】:2021-12-30 15:51:28
【问题描述】:
我尝试在派生类中自动键入一个被覆盖的方法以避免重复自己。
class A<T> {
foo (bar: T) {
return bar
}
}
class B extends A<number> {
// Error: bar is any instead of number
foo (bar) {
console.log(bar)
return bar
}
}
我不明白为什么上面的代码不能正常工作。这里有什么问题?有解决办法吗?
// 编辑:
问题是,“我必须改变什么才能让它发挥作用”。我不想在函数定义中编写类型,因为我有多个带有多个参数的函数。我不想重复自己。作为奖励,我想了解它在后台是如何工作的,以及为什么它不像我那样工作
【问题讨论】:
-
这样做的全部原因是为了避免再次输入所有内容。在我的实际应用程序中,泛型要复杂得多,并且有多种方法使用它。我不想重复自己:/
-
如果他们需要匹配,它应该只会在我指定错误类型时抱怨,否则假设来自基类的那些不应该吗?
-
@blurfus 问题是“为什么 TS 不能推断
number参数”,而不是“如何停止any的 TS 错误”。 -
这里的主要问题是什么?是“为什么它不起作用/问题是什么”(答案涉及github.com/microsoft/TypeScript/issues/1373 和github.com/microsoft/TypeScript/issues/23911)还是“有解决方案”可能需要各种解决方法建议?
-
@jcalz 这些链接非常有用。谢谢!
标签: typescript typescript-generics