使用嵌套类方法创建API(Typescript)

时间:2019-06-01 14:56:12

标签: typescript nested typescript-class

我正在尝试创建一个包装REST api的typescript类,并且我想将各种方法组织到子对象中,以更好地表达代码。这样做有什么办法,并且仍然通过方法中的“ this”保持对类实例的访问?

例如考虑以下类别:

class ApiService {
  constructor() {....}

  getMedia() {}

  uploadMedia() {}

  sendMassage() {}

  recieveMessage() {}

}

我想组织上述方法,以便能够这样称呼他们:

const service = new ApiService();
//to call getMedia()
service.media.get();
//to call sendMessage()
service.messages.send();
// and so on

1 个答案:

答案 0 :(得分:0)

我认为要完全满足您的要求,应使用arrow functions,以使apiService.mediaapiService.message对象没有自己的{{1} }上下文阻碍。例如:

this

请注意,这意味着class ApiService { constructor(public name: string) { } private getMedia() { console.log(this.name+" getMedia"); } private uploadMedia() { console.log(this.name+" uploadMedia"); } private sendMassage() { console.log(this.name+" sendMessage"); } private recieveMessage() { console.log(this.name+" receiveMessage"); } // instance methods public media = { get: () => this.getMedia(), upload: () => this.uploadMedia() } // instance methods public message = { send: () => this.sendMassage(), receive: () => this.recieveMessage() } } 的每个实例将具有其函数值属性ApiService等的自己的副本。它们不会像常规方法那样位于message.send上。除非您生成ApiService.prototype的许多实例,否则无关紧要。

让我们确保它可以正常工作并正确绑定:

ApiService

看起来不错。希望能有所帮助;祝你好运!

Link to code