react native - TypeScript: nelze přiřadit k boolean nebo PromiseLike
Píšu aplikaci v React Native pomocí TypeScriptu?
Napsal jsem obalovou funkci pro funkce z React Native Firebase takto:
export const checkPermissions = (): Promise<boolean> =>
new Promise((resolve, reject) => {
firebase
.messaging()
.hasPermission()
.then(enabled => {
if (enabled) {
return resolve(enabled);
} else {
return firebase.messaging().requestPermission();
}
});
});
Teď dostávám následující chybu:
[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>'.
Co dělám špatně?
Odpověď č. 1
To je proto, že vracíte firebase.messaging().requestPermission(); jako metodu a ne její výsledky, co potřebujete udělat, je propojit tyto dva přísliby takto:
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);
});
}
