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);
});
}
我正在使用 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);
});
}