流:为子类指定接口的正确方法是什么?

时间:2019-04-01 15:53:06

标签: flowtype

有关Flow接口和Javascript分类的问题...

假设我具有以下界面:

declare interface IA {
    x(): string;
}

和以下具有一个方法并实现IA的基类:

class A implements IA {
    x(): string
}

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

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
}

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

谢谢。

-艾伦

1 个答案:

答案 0 :(得分:0)

我可以想到两个主要选择。如果您确实希望BA的子类,那么选项1会很好,而如果您想将类A和类B分开,则选项2会很好。 / p>

选项1

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

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

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

选项2

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

declare interface IB {
    y(): number;
}

并拥有class AB implements IA, IB。有关如何运行的示例,请参见here