TypeScript:不可分配给布尔值或 PromiseLike

TypeScript: is not assignable to boolean or PromiseLike

我正在使用 TypeScript 编写 React Native 应用程序?

我已经为来自 React Native Firebase 的函数编写了一个函数包装器,如下所示:

export const checkPermissions = (): Promise<boolean> =>
  new Promise((resolve, reject) => {
    firebase
      .messaging()
      .hasPermission()
      .then(enabled => {
        if (enabled) {
          return resolve(enabled);
        } else {
          return firebase.messaging().requestPermission();
        }
      });
  });

现在我得到以下错误:

[ts]
Argument of type '(enabled: boolean) => void | Promise<boolean>' is not assignable to parameter of type '(value: boolean) => boolean | PromiseLike<boolean>'.
  Type 'void | Promise<boolean>' is not assignable to type 'boolean | PromiseLike<boolean>'.
Type 'void' is not assignable to type 'boolean | PromiseLike<boolean>'.

我做错了什么?

那是因为您返回 firebase.messaging().requestPermission(); 作为方法而不是结果,您需要做的是像这样连接这两个承诺:

export const checkPermissions = (): Promise<boolean> => {
    return new Promise((resolve, reject) => {
        firebase
            .messaging()
            .hasPermission()
            .then(enabled => {
                if (enabled) {
                    resolve(enabled);
                } else {
                    firebase.messaging().requestPermission()
                        .then(resolve)
                        .catch(reject);
                }
            }).catch(reject);
    });
}