Typescript 类型脚本方法TS2322错误

Typescript 类型脚本方法TS2322错误,typescript,Typescript,我能够创建一个Typescript类对象,但是每次我在类上创建任何方法时,它都会中断 export class VacationServerResults { vacationOffers: Array<VacationHotelTicketDateOffersModel>; constructor() { this.vacationOffers = new Array<VacationHotelTicketDateOffersModel>(); }

我能够创建一个Typescript类对象,但是每次我在类上创建任何方法时,它都会中断

export class VacationServerResults {

 vacationOffers: Array<VacationHotelTicketDateOffersModel>;


constructor() {
    this.vacationOffers = new Array<VacationHotelTicketDateOffersModel>();

}

public greet() {
    return "hello";
}   

}
导出类休假服务器结果{
度假者:阵列;
构造函数(){
this.vacationOffers=新数组();
}
公众问候{
回复“你好”;
}   
}
每次添加greet方法时,都会出现以下错误

文件: '文件: 严重性:“错误”消息:“类型”{“vacationOffers”:{ “vacationOffer”:{“offerType”:字符串;“hotelRoomBasePrice”:编号; “hote…”不能分配给类型“VacationServerResults”。
类型{“vacationOffers”中缺少属性“greet”:{ “vacationOffer”:{“offerType”:字符串;“hotelRoomBasePrice”:编号; “hote…”在:'36,5'来源:'ts'


您可能在代码中的另一个位置为类型为
VacationServerResults
的对象指定了对象文字。Typescript使用结构兼容性来确定类型兼容性,因此以下代码是有效的:

class Dog {
  name: string;
}

var d: Dog = {name : "My dog"};
添加方法后,对象文字将不再满足类的结构,我们将收到您的错误。您可以执行以下操作之一:

在对象文本中指定方法(一种相当老练的解决方案)

为类创建一个构造函数,该构造函数接受对象文本,并将对象更新为新的,而不是使用对象文本:

class Dog {
  constructor(props: { name: string }){
    Object.assign(this, props)
  }
  name: string;
  bark(): void{}
}

var d = new Dog({name : "My dog" });

Titan,我想你的答案是正确的,但我有后续问题。@user2502794当然,什么问题?Titan,我想你的答案是正确的,但我有后续问题,因为我试图操作一个复杂的对象,然后生成一个新的对象。你如何处理嵌套对象?类DogCollection{dogs:Array;constructor(props:{dogs:Array}{Object.assign(this,props);}}//test let vetDogs=new dogdocollection({“dogs”:[{“happy”,“grumpy”}]})如果dogs数组实际上是
string
的数组,您可以像在示例中那样分配它,您需要像这样创建
new dogdocollection({“dogs”:[“happy”,“grumpy”})
@user2502794如果dogs数组由dogs组成,则需要将它们映射到dog类型:
dogs:array;构造函数(props:{dogs:array}){Object.assign(this,props);this.dogs=props.dogs.map(p=>newdog(p));}
class Dog {
  constructor(props: { name: string }){
    Object.assign(this, props)
  }
  name: string;
  bark(): void{}
}

var d = new Dog({name : "My dog" });