Typescript 类型脚本接口成员前缀 问题

Typescript 类型脚本接口成员前缀 问题,typescript,interface,naming-conventions,Typescript,Interface,Naming Conventions,根据我的研究,typescript接口只存在于compiletime,在JS中没有相应的结构,而类则存在 这就是为什么您不能显式地实现接口,因为您可以在其他语言(例如c#)中实现接口 考虑这个例子: export interface FooableBar { foo(); } export class Bar implements FooableBar { foo(){} } 当然,如果我想为Bar实现另一个foo(),我可以简单地重命名它 但是如果Bar要实现第二个这样的接

根据我的研究,typescript接口只存在于compiletime,在JS中没有相应的结构,而类则存在

这就是为什么您不能显式地实现接口,因为您可以在其他语言(例如c#)中实现接口

考虑这个例子:

export interface FooableBar {
    foo();
}

export class Bar implements FooableBar {
    foo(){}
}
当然,如果我想为
Bar
实现另一个
foo()
,我可以简单地重命名它

但是如果
Bar
要实现第二个这样的接口,该怎么办

export interface SpecialFooable {
    foo();
}
这就是显式实现可以完美完成这项工作的地方。不幸的是,这必须通过命名来完成

问题 通常会问:在TypeScript中实现这一点的最佳方法是什么

或者什么样的命名约定最适合TypeScript概念

例如,我发现对库或框架(如angular)使用前缀是很常见的。如果可以找到此接口:

export interface OnInit {
    ngOnInit();
}

前缀
ng
确实提供了只实现我们自己的
onInit()
的选项,但就我而言,添加
app
前缀根本解决不了问题

我想出了一个解决方案,在接口名称的缩写前加前缀:

export interface SomeFancyDelegate {
    sfdLoadData();
}
但是我仍然有其他的或者希望更好的解决方案


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

我看不出有什么问题。让您的类实现一个
foo()
方法来满足两个接口有什么不对?关键是,有时您必须这样做。主要是通过让实现相互依赖来解决的,就像重写方法并在某个地方调用基方法时可以做到的那样?你可能有什么想法,但从你的问题上看并不明显。不清楚您试图解决什么问题。@RobbyCornelissen我正在解决无法显式实现带有命名的接口的问题。我想知道这是否是这样做的最佳做法。当然,这是一个与功能无关的问题。更重要的是编写干净的代码。也许其他人会尝试回答你的问题,但我不知道“不能显式实现带有命名的接口”意味着什么。