interface IFoo {
method: (ha: string) => void;
}
class Foo implements IFoo {
public method(ha) {}
}
在类方法中将'ha'参数悬停在
参数“ ha”隐式具有“ any”类型,但更好的类型可能是 从使用情况推断出
由于该类可改善接口,因此它不应该与接口类型匹配吗?如果您尝试为参数“ ha”赋予与字符串不同的类型(例如数字),则会错误地指出它无法分配给字符串类型,这很有意义。
那么,为什么我需要在接口和类中都分配ha类型?这是预期的行为吗?
答案 0 :(得分:4)
当前,TypeScript不支持。
您可以在此处了解更多信息:https://github.com/Microsoft/TypeScript/issues/23911
这不是简单的任务。
这是因为TypeScript是基于JavaScript构建的,并且没有像其他语言(如C#)那样的接口分辨率。
为了给您一些基本的概念,假设您有两个接口X
和Y
都具有相同的方法但类型不同:
interface X { foo(i: string): string }
interface Y { foo(x: number): number }
在创建同时实现这两个接口的类时,不能像这样将接口组合在一起:
class K implements X, Y {
// error: this does not satisfy either interfaces.
foo(x: number | string): number | string {
return x
}
}
对于这个简单的示例,您需要:
class K implements X, Y {
foo(x: number): number
foo(x: string): string
foo(x: number | string): number | string {
return x
}
}
即使那样也不理想,因为它不强制输入类型将匹配输出类型。