根据我的研究,打字稿接口仅在编译时存在,而在JS中没有相应的结构,而类则存在。
这就是为什么您不能显式实现接口的原因,因为您可以使用其他语言(例如c#)来实现。
考虑以下示例:
export interface FooableBar {
foo();
}
export class Bar implements FooableBar {
foo(){}
}
当然,如果我想为foo()
使用Bar
的另一种实现,则可以简单地重命名。
但是如果Bar
要实现这样的第二个接口怎么办:
export interface SpecialFooable {
foo();
}
这是显式实现可以完美完成工作的地方。不幸的是,这必须通过命名来完成。
通常会问:在TypeScript中执行此操作的最佳方法是什么?
或哪种类型的命名约定最适合TypeScript概念?
例如,我发现对库或诸如angular的框架使用前缀是很常见的。在哪里可以找到此接口:
export interface OnInit {
ngOnInit();
}
前缀ng
确实提供了仅实现我们自己的onInit()
的选项,但就我而言,添加app
前缀根本无法解决问题。
答案 0 :(得分:0)
我想出了为接口名称的缩写加上前缀的解决方案:
export interface SomeFancyDelegate {
sfdLoadData();
}
但是我仍然对其他解决方案或希望更好的解决方案感到困惑。
无论如何,在这种情况下,您是否还会为接口成员加上前缀以保持一致性?