类型 'boolean' 不可分配给类型 'Promise<boolean>'

Type 'boolean' is not assignable to type 'Promise<boolean>'

我正在使用应用内购买,如果由于某种原因我无法从 Google 或 [= 检索产品信息,我想将 UI 更改为 'unavailable' 41=] 应用商店。

  ionViewDidEnter() {
    this.platform.ready().then(async () => {
      firebase.auth().onAuthStateChanged(async user => {
        this.currentUser = user;
      });
      this.unavailable = await this.setupProducts();
      console.log('available', this.unavailable);
    });
  }

  setupProducts(): Promise<boolean> {
    let productWWHS: string;
    let productISA: string;

    if (this.platform.is('ios')) {
      productWWHS = 'prodID';
      productISA = 'prodID';

    } else if (this.platform.is('android')) {
      productWWHS = 'prodID';
      productISA = 'prodID';
    }

    this.inAppPurchase.ready(() => {
      this.products.push(this.inAppPurchase.get(productWWHS));
      this.products.push(this.inAppPurchase.get(productISA));
      if (!this.products[0]) {
        return true;
      }
    });
    return false;
  }

我在这个方法中做错了,它有错误 类型 'boolean' 不可分配给类型 'Promise'

我想以某种方式断言 inAppPurchase.get() 已经 return 编辑了一些东西,但它没有 return 承诺。

有更好的方法吗?

如有任何帮助,我们将不胜感激。

要修复输入错误,您需要将函数定义为 async:

async setupProducts(): Promise<boolean> {
...
return false;
}

请注意,this.inAppPurchase.ready(() => {...}) 中的 true 值不会从 setupProducts() 中返回。它将从匿名函数 () => {...} 返回并且不会影响任何东西。

你可能需要像

这样的东西
async setupProducts(): Promise<boolean> {
...
await this.inAppPurchase;

this.products.push(this.inAppPurchase.get(productWWHS));
this.products.push(this.inAppPurchase.get(productISA));

if (!this.products[0]) {
  return true;
}

return false;
}

如果 this.inAppPurchase 是函数而不是 getter,请不要忘记 ()