TypeScript:不可分配给 boolean 或 PromiseLike
Posted
技术标签:
【中文标题】TypeScript:不可分配给 boolean 或 PromiseLike【英文标题】:TypeScript: is not assignable to boolean or PromiseLike 【发布时间】:2019-03-19 03:28:28 【问题描述】:我正在使用 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>'.
我做错了什么?
【问题讨论】:
【参考方案1】:那是因为您将 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:不可分配给 boolean 或 PromiseLike的主要内容,如果未能解决你的问题,请参考以下文章
void' 不可分配给类型为 '(value: User[], index: number) => boolean' 的参数
与 Typescript 反应:“never[]”类型的参数不可分配给“StateProperties |”类型的参数(() => 状态属性)'
UserModel 不可分配给 Document | 类型的参数nulll [带有 Typescript 的猫鼬]
类型“字符串”不可分配给类型“WebkitAppearance |在 React + TypeScript 中未定义?
TypeScript 2.4.1 -> fontWeight -> 类型 'number' 不可分配给类型 '"inherit" | 400 |