首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用嵌套类方法创建API (Typescript)

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

Stack Overflow用户
提问于 2019-06-01 22:56:12
回答 1查看 75关注 0票数 0

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

例如,考虑以下类:

代码语言:javascript
运行
复制
class ApiService {
  constructor() {....}

  getMedia() {}

  uploadMedia() {}

  sendMassage() {}

  recieveMessage() {}

}

我想组织上面的方法,这样我就可以像这样调用它们:

代码语言:javascript
运行
复制
const service = new ApiService();
//to call getMedia()
service.media.get();
//to call sendMessage()
service.messages.send();
// and so on
EN

回答 1

Stack Overflow用户

发布于 2019-06-02 02:39:29

我认为,要实现您所要求的内容,您应该使用arrow functions,这样apiService.mediaapiService.message对象就不会有自己的this上下文来妨碍它们。例如:

代码语言:javascript
运行
复制
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实例。

让我们确保它能正常工作并被正确绑定:

代码语言:javascript
运行
复制
const api1 = new ApiService("One");
const api2 = new ApiService("Two");

api1.message.receive(); // One recieveMessage
api2.message.receive(); // Two receiveMessage

api1.media.get(); // One getMedia
api2.media.get(); // Two getMedia

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

Link to code

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56407774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档