flowtype - 流程:为子类指定接口的正确方法是什么?
问题描述
关于 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
}
?
该文档似乎没有涵盖如何处理涉及子类化的接口。
谢谢你。
-艾伦
解决方案
我可以想到两个主要选择。B
如果您真的想成为 的子类,选项 1 会很好A
,而如果您想将 classA
和 class分开,选项 2 效果很好B
。
选项1
您可以编写一个IB
扩展接口的接口IA
declare interface IB extends IA {
y(): number;
}
并且有class B implements IB
。请注意,B
将需要同时实现x
和y
。有关示例,请参见此处。
选项 2
你可以写一个IB
不扩展的接口IA
declare interface IB {
y(): number;
}
并且有class AB implements IA, IB
。有关如何工作的示例,请参见此处。
推荐阅读
- xcode - 使用 macos 将 boost-python3 与 xcode 链接的问题
- powershell - 删除容器内的文件夹
- android - Webview 音频权限
- php - 为什么这个带有 getAttribute 的 PHP DOM 解析不起作用?
- intellij-idea - 启用注释处理和 Intellij Lombok
- google-pagespeed - Lighthouse 返回错误:我的站点副本的 NO_FCP
- python-3.x - 根据标题中的浮点后缀对数据框中的列进行排序
- javascript - 动态拆分 div 列
- python - Google CloudML:即使培训尚未完成,“完成拆除培训计划”后作业也会失败
- gradle - Gradle 增量 Java 构建失败并出现“找不到符号错误”