在类上实现接口需要重新声明类型

时间:2018-08-20 19:44:05

标签: typescript interface

在主题中,为什么我需要在实现声明相同属性的接口的类中重新声明属性的类型?

我确定实现该接口的类将继承这些类型,但是似乎编译器仅检查是否存在所有指定的属性或方法。是Bug还是我误解了接口在Typescript中的工作方式?

例如:

1)一切都很好,但是类型必须声明两次 1) Everything is fine, but the types have to be declared twice

2)类型仅声明一次,导致类型any 2) The types are declared only once, resulting in type any

3)当其他类型从数字更改为字符串时,打字稿会正确检查该类型。 3) When different type is changed from number to string, typescript correctly checks the type.

我期待3),但令我惊讶的是2)显示的是any。 这种行为令我有些困惑,请您多加说明。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

实现接口不会继承类型。 herehere以及相关链接中对此进行了讨论;我花了几分钟的时间进行挖掘,但是找不到原始原因的简明陈述。无论如何,现在更改此行为将是一项重大更改。

一种解决方法是编写一个与类合并的接口(如果使用strictPropertyInitialization,则不建议这样做,因为这似乎绕过了它):

interface Point extends IPoint {}
class Point implements IPoint { ... }