TypeScript接口成员前缀

时间:2018-11-14 08:05:32

标签: typescript interface naming-conventions

问题

根据我的研究,打字稿接口仅在编译时存在,而在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前缀根本无法解决问题。

1 个答案:

答案 0 :(得分:0)

我想出了为接口名称的缩写加上前缀的解决方案:

export interface SomeFancyDelegate {
    sfdLoadData();
}

但是我仍然对其他解决方案或希望更好的解决方案感到困惑。

无论如何,在这种情况下,您是否还会为接口成员加上前缀以保持一致性?