首页 > 解决方案 > 流程:为子类指定接口的正确方法是什么?

问题描述

关于 Flow 接口和 Javascript 类的问题...

假设我有以下界面:

declare interface IA {
    x(): string;
}

以及下面的基类,它有一个方法,并且实现了 IA:

class A implements IA {
    x(): string
}

假设我想创建一个 A 的子类,称为 B,它添加了一个方法:

class B extends A {
    y(): number
}

...如何为 B 指定接口(称为 IB)?以及如何指示 B 实现了 IB,同时仍然通过继承 A 类来实现 IA?

IB 是否必须重复IA 中的所有方法?

B 是否需要表明它同时实现IA 和 IB,如下所示...

class B extends A implements IA, IB {
    y(): number
}

?

该文档似乎没有涵盖如何处理涉及子类化的接口。

谢谢你。

-艾伦

标签: flowtype

解决方案


我可以想到两个主要选择。B如果您真的想成为 的子类,选项 1 会很好A,而如果您想将 classA和 class分开,选项 2 效果很好B

选项1

您可以编写一个IB扩展接口的接口IA

declare interface IB extends IA {
    y(): number;
}

并且有class B implements IB。请注意,B将需要同时实现xy。有关示例,请参见此处。

选项 2

你可以写一个IB不扩展的接口IA

declare interface IB {
    y(): number;
}

并且有class AB implements IA, IB。有关如何工作的示例,请参见此处。


推荐阅读