TypeScript:在匿名类的方法内部访问“ this”

时间:2019-06-03 12:44:32

标签: typescript

在我的代码中,我正在创建一个实现接口的新匿名类。

private service: CommandService;

this.command = new class implements Command {
  execute(id: string): Promise<Result> {
    const resultId: string = await this.service.getResultId();
    return await this.service.getResult(resultId);
  };
};

在这种情况下,访问服务的最佳方法是什么?我在想什么

  • 在班级上方定义const _this = this
  • 将服务提供给execute函数。

有没有更好的方法来实现这一目标?

编辑:

我知道这里已经有一个很棒的answer,但是,它没有解释如何在匿名类中访问this

1 个答案:

答案 0 :(得分:0)

您从不希望将this.分配给变量,这种做法打破了使用类的全部要点。相反,这应该是2个不同的类,并像这样将所需的值传递到“内部”类中

import { Command, CommandService, Result } from 'foo';

class MyCommand implements Command {
    constructor(private readonly service: CommandService) { }
    async execute(id: string): Promise<Result> {
        const resultId: string = await this.service.getResultId();
        return await this.service.getResult(resultId);
    };
};

class ParentClass {
    private readonly service: CommandService;
    private readonly command = new MyCommand(this.service); 
}