【问题标题】:My `Buttonhandler` always causes this error and I don't know how to fix it我的 `Buttonhandler` 总是导致这个错误,我不知道如何解决它
【发布时间】:2023-12-07 10:44:01
【问题描述】:

好的,所以我有一个离子选择器,我给了它一个完成按钮,它读取选定的值并将其保存在一个数组中。整个事情没有问题,但是当我编译它时它总是导致显示这个错误:

"error TS2322: Type '() => Promise<void>' is not assignable to type 
'(value: any) => boolean | void'.
Type 'Promise<void>' is not assignable to type 'boolean | void'.
Type 'Promise<void>' is not assignable to type 'void'."

这不是一个真正的问题,因为该错误仅在我编译它时出现并且不会造成任何实际损害,但我仍然希望它能够得到解决。

我尝试了很多方法来解决这个问题,但没有什么能让错误消失而不破坏处理程序的功能。 (如下图)

{
     text: 'Done',
     role: 'confirm',
     handler: async () => {
         const vari = await this.picker.getColumn(this.pickervalues[id].name);
         this.selectedvalue = vari.options[vari.selectedIndex].text;
         this.selected[id] = this.selectedvalue;
     }
}

有人知道如何摆脱这个错误吗?

【问题讨论】:

    标签: ionic-framework ionic4


    【解决方案1】:

    你可以使用 then 代替 async/awiat:

    {
      text: 'Done',
      role: 'confirm',
      handler: () => {
        this.picker.getColumn(this.pickervalues[id].name).then(() => {
          this.selectedvalue = vari.options[vari.selectedIndex].text;
          this.selected[id] = this.selectedvalue;
        });
      }
    }
    

    看到这个Github issue 供其他参考。

    【讨论】: