Typescript 类不实现接口类型
Posted
技术标签:
【中文标题】Typescript 类不实现接口类型【英文标题】:Typescript class doesn't impelement interface types 【发布时间】:2019-06-27 07:22:05 【问题描述】:interface IFoo
method: (ha: string) => void;
class Foo implements IFoo
public method(ha)
悬停在类方法中的'ha'参数表示
参数 'ha' 隐含地具有 'any' 类型,但更好的类型可能是 从使用情况推断
既然类impelements接口,它不应该匹配接口类型吗?如果您尝试为参数 'ha' 赋予与字符串不同的类型,比如数字,它会错误地认为它不能分配给类型字符串,这是有道理的。
那么,为什么我需要在接口和类中都分配 ha 的类型呢?这是预期的行为吗?
【问题讨论】:
【参考方案1】:目前,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
即使这样也不理想,因为它不强制输入类型将匹配输出类型。
【讨论】:
以上是关于Typescript 类不实现接口类型的主要内容,如果未能解决你的问题,请参考以下文章
TypeScript 类使用联合类型字段实现接口导致错误 (2322)