Javascript 如何在Angular中定义接口中的函数?

Javascript 如何在Angular中定义接口中的函数?,javascript,angular,typescript,class,interface,Javascript,Angular,Typescript,Class,Interface,我有以下问题,我没有找到有效的解决方案。 我的Angular应用程序中有一个接口: export interface Person { forename: string; surname: string; } 如何使用以下实现定义名为getFullName()的函数: getFullName(){ return this.forename + " " + this.surname; } 我直接在接口中使用函数作为键进行了尝试,但没有成功…您可以使用函

我有以下问题,我没有找到有效的解决方案。 我的Angular应用程序中有一个接口:

export interface Person {
    forename: string;
    surname: string;
}

如何使用以下实现定义名为
getFullName()
的函数:

getFullName(){
  return this.forename + " " + this.surname;
}

我直接在接口中使用函数作为键进行了尝试,但没有成功…

您可以使用函数签名
()=>字符串
来表示接受0个参数并返回字符串的函数

导出接口人{
名字:字符串;
姓氏:弦;
getFullName:()=>字符串;
}
但是,您不能在接口中定义实现

要创建实现接口的类,可以执行以下操作:

类MyPerson实现Person{
构造函数(公共名字:string,公共姓氏:string){}
getFullName(){
返回this.forename+“”+this.姓氏;
} 
}

在这种情况下,您可能不需要接口人员,而只需要使用类。

接口不能有实现,您只能声明此类方法的存在(
getFullName():string
)。为了实现,您需要一个类。@jornsharpe所以如果我有一个接口,如果我的接口中有一个函数签名,我就必须为该接口生成一个类?那我为什么想要一个接口呢?所以,如果你有函数,类会是一个更好的主意?你只能在实现中有实际的函数,基于类或其他,而不是接口。接口在发出的JS中不存在,所以不能有实现。我想我理解了,接口就像一个抽象类。不,显式不存在:我应该把实现放在哪里?@Opat updated。您应该使用一个接口来声明对象属于某种类型,因此可以以某种方式使用。例如,如果您有几个不同的类实现(例如学生、教师),它们具有
Person
属性。如果你只想创建person对象,那就不用麻烦界面了。啊,我想现在我明白了。接口就像一个抽象类,还是我错了?这是一个类似的概念。关键的区别通常是接口不包含实现,并且可以实现多个接口(通常抽象类可以包含实现,一个类只能扩展一个抽象类)。不过,这些并不是每种语言的具体规则,但对于TypeScript来说确实如此。在抽象类和接口上有大量的资源,所以我不想在这里重复它们,而是在google上寻找一些更好的解释。