使用打字稿推断类型的问题

我有一个 TypeScript 函数,它删除 Firebase 数据库中的“路径”。它返回一个 Promise ,然后解析为一个布尔标志,指示内容是否真正存在于首位(也就是说,如果它不存在,则无需删除)。

该函数如下所示:

export function remove(path: string): Promise<boolean> {
  return exists(path)
    .then(existance => {
      return existance
        ? getRef(path).remove()
          .then(() => Promise.resolve(true))
        : Promise.resolve(false);
    })
    .catch((err: any) => {
      console.log(`There was an error trying to remove the path "${path}": `, err);
      return Promise.reject(err);
    });
}

但是,这会导致以下错误消息(请注意,消息中的差异取决于我悬停在表达式中的位置):

在此处输入图片说明

如果有人对这个exists()函数感兴趣——顺便说一句,TypeScript 没有问题——它是:

export function exists(path: string): Promise<boolean> {
  return getRecord(path)
    .then(snap => snap.val()
      ? Promise.resolve(true)
      : Promise.resolve(false)
    )
    .catch(Promise.reject);
}

无论如何,我不知道为什么我会收到这些错误,并且很想知道任何人可能拥有的任何见解。

ps 我使用的是 TypeScript 2.2.2


更新:正如评论中指出的那样......这些错误似乎只在使用流行的 Bluebird 承诺库时发生

目前有一些不太直观的方法可以让 Bluebird 承诺覆盖 TypeScript 提供的全局 Promise。这个问题在这里讨论:

简而言之,我的问题更多是在某些情况下使用 Bluebird Promises 而在其他情况下使用原生 Promises 的影响。要强制使用 Bluebird,一个可行的解决方案是:

/src/[xxxx].js

import * as Bluebird from './bluebird';

/src/bluebird.js

declare module 'bluebird-global' {
  import * as Bluebird from 'bluebird';
  global { export interface Promise<T> extends Bluebird<T> {} }
}

通过这种方式,您应该始终获得 Bluebird 承诺,并且将避免我遇到的错误。


更新......更好的解决方案。包括@types/bluebird-global模块,你就完成了!

注意:如果在您的tsconfig.js文件中使用“types”参数(大多数不使用),则将bluebird-global添加到该部分:

types: [
  "bluebird-global"
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

打字稿和类型推断:验证问题

来自分类Dev

打字稿推断问题

来自分类Dev

打字稿推断的类型不能使用

来自分类Dev

打字稿联合类型推断

来自分类Dev

打字稿返回类型推断

来自分类Dev

在打字稿中使用扩展类型进行类型推断

来自分类Dev

打字稿:使用装饰器时的类型推断

来自分类Dev

打字稿无法推断通用类型

来自分类Dev

打字稿吸气剂类型推断

来自分类Dev

打字稿部分类型推断

来自分类Dev

打字稿:通用类类型推断

来自分类Dev

为什么在使用区分类型检查时无法打字稿推断出返回类型

来自分类Dev

打字稿推断联合类型而不是指定的类型

来自分类Dev

如果使用功能参数,则无法推断打字稿类型

来自分类Dev

打字稿:参数顺序会影响类型推断吗?

来自分类Dev

推断打字稿中嵌套的泛型类型?

来自分类Dev

为什么打字稿功能参数类型推断失败?

来自分类Dev

为什么打字稿不能推断表达类型

来自分类Dev

必须定义打字稿类型推断不能识别值

来自分类Dev

打字稿中的函数重载和类型推断

来自分类Dev

为什么打字稿可以使用双重否定而不是布尔构造函数来推断非空类型?

来自分类Dev

打字稿:使用元组作为索引类型

来自分类Dev

在yup模式中使用打字稿类型

来自分类Dev

是否可以推断打字稿中映射类型的函数的返回类型?

来自分类Dev

打字稿联合类型和推断不同的属性,无需额外的类型检查

来自分类常见问题

减速器中的打字稿类型问题

来自分类Dev

打字稿中可调用类型关系的问题

来自分类Dev

减速器中的打字稿类型问题

来自分类Dev

Visual Studio编译带有确定类型的打字稿的问题

Related 相关文章

热门标签

归档