如何修复typescript中避免引用未绑定方法的错误?

如何修复typescript中避免引用未绑定方法的错误?,typescript,Typescript,我正在尝试运行此代码,但我 Avoid referencing unbound methods which may cause unintentional scoping of `this`.eslint@typescript-eslint/unbound-method 在this.UserLoop和this.RoleLoop上。我怎样才能解决这个问题 export default class Schedule { constructor(guild: Disco

我正在尝试运行此代码,但我

Avoid referencing unbound methods which may cause unintentional scoping of `this`.eslint@typescript-eslint/unbound-method
this.UserLoop
this.RoleLoop
上。我怎样才能解决这个问题

export default class Schedule {  
        
    constructor(guild: Discord.Guild) {
        // schedule the benefits to be handed out to patrons
        schedule.scheduleJob(CONFIG.CRON_every_day, this.Benefit.bind(null, guild));
    }

    private async Benefit(guild: Discord.Guild):Promise<void> { // every day
        await Promise.all(DAO_USER.GetAllUsersInGuild(guild.id).map(this.UserLoop));
    }

    private async UserLoop(user: MDL_USER):Promise<void> {
        const ds_user = DAO_USER.GetUserByID(user.GetID());
        const roles = ds_user.GetRoles();
        await Promise.all(roles.map(this.RoleLoop));
    }

    private async RoleLoop(role_id: string):Promise<void> {
        const benefit_function = ACTIONS.mappings[role_id][CONFIG.CRON_every_day].patron_benefit;
        await benefit_function(ds_user);
    }
}
导出默认类计划{
建造师(帮会:Discord.guild){
//安排发放给顾客的福利
scheduleJob(CONFIG.CRON_every_day,this.Benefit.bind(null,guild));
}
私人异步好处(帮会:Discord.guild):承诺{//每天
等待承诺.all(DAO_USER.GetAllUsersInGuild(guild.id.map(this.UserLoop));
}
私有异步UserLoop(用户:MDL\u用户):承诺{
const ds_user=DAO_user.GetUserByID(user.GetID());
const roles=ds_user.GetRoles();
等待承诺.all(roles.map(this.RoleLoop));
}
私有异步RoleLoop(角色\u id:string):承诺{
const benefit_function=ACTIONS.mappings[role_id][CONFIG.CRON_every_day];
等待福利功能(ds用户);
}
}

我有3个明显的选择

  • 要将这两个方法标记为静态方法并传递静态方法:
    static async UserLoop(用户:MDL_user):Promise{
    .map(Schedule.UserLoop))
  • 将它包装在一个小回调中,这样就不会丢失
    这个
    .map(user=>this.UserLoop(user));
  • 使方法绑定:
    private UserLoop=async(用户:MDL\u用户):Promise=>{

  • 在我看来,第二个选项是最合适的

    这能回答您的问题吗?不太可能,解决方法是将其分配给self,但当我这样做时,我会遇到另一个问题
    将“this”意外别名分配给局部变量。eslint@typescript-eslint/no此别名
    这是建议的修复方法之一。具体取决于特定上下文和您的lint规则您可能需要选择一个不同的规则。