在angular/typescript中使用另一个接口上的函数为接口属性赋值?

在angular/typescript中使用另一个接口上的函数为接口属性赋值?,angular,typescript,Angular,Typescript,我希望属性值依赖于Angular 2+中同一接口内的另一个属性值。 目标是避免每次在我的应用程序中使用这个类时调用相同的函数 大概是这样的: export interface PersonItem { _id?: number; name: string; lastName: string; fullName: getFullName(this.name, this.lastName) } function getFull

我希望属性值依赖于Angular 2+中同一接口内的另一个属性值。 目标是避免每次在我的应用程序中使用这个类时调用相同的函数

大概是这样的:

  export interface PersonItem {

        _id?: number;
       name: string;
       lastName: string;
       fullName: getFullName(this.name, this.lastName)
  }

  function getFullName(name, surname) {

        return (name + ' ' + surname);
   }

您已经声明了一个接口。接口非常适合声明外部世界可以在对象上看到的属性和函数。他们不允许您添加任何实现细节

实现细节以函数或类的形式出现

您当前有一个函数,但希望在对象本身上实现它。为此,您可以创建一个实现该接口的类。我建议您保留您的界面,并在可能的情况下传递它。使用
ipersonim
的代码并不关心
fullName
是如何实现的,只关心它的存在

导出接口IPersonItem{
_id?:编号;
名称:字符串;
lastName:string;
全名:字符串;
}
导出类personite实现ipersonite{
建造师(
公共名称:string,
public lastName:string,
公共_id?:编号
) {
}
get fullName(){return`${this.name}${this.lastName}`;}
}
一些示例用法:

导出类MyService{
getPersonItem():IPersonItem{
返回新的personite('first','last',123);
}
}
导出类MyComponent{
构造函数(私有myService:myService){}
恩戈尼尼特(){
const-person:ipersonim=this.myService.getPersonim();
console.log(person.fullName);/“first-last”
}
}

您可以像下面那样在类型脚本中执行此操作

export interface PersonItem {
  _id?: number;
 name: string;
 lastName: string;
 fullName: Function;
}

let p: PersonItem = {name:"Ankur", lastName:"shah", fullName: function(this){ return this.name + ' ' + this.lastName}};
let temp  = p.fullName();

不能向接口添加功能。你能改用类吗?哪种语法正确???