【问题标题】:TypeScript complains with and without libTypeScript 抱怨有和没有 lib
【发布时间】:2018-05-18 19:29:48
【问题描述】:

我正在尝试在 TypeScript 项目中添加异步函数。代码如下所示:

chrome.tabs.onUpdated.addListener(async (id, c, t) => { ... });

TypeScript 抱怨:

错误 TS2705:ES5/ES3 中的异步函数或方法需要“Promise”构造函数。确保您有“Promise”构造函数的声明或在您的 --lib 选项中包含“ES2015”

当我将 lib: ['es2015'] 添加到 tsconfig 时,TypeScript 开始抱怨所有对 console.log 的调用,说控制台未定义。

【问题讨论】:

    标签: typescript async-await


    【解决方案1】:

    es5default libsDOM,ES5,因此如果您指定es2015,您还需要显式添加dom,因为console 是在dom 库中定义的。样品tsconfig.json:

    {
        "compilerOptions": {
            "target": "es5",
            "lib": [
                "es2015",
                "dom"
            ]
        }
    }
    

    Typescript 对默认库采用模块化方法,因此您可以仅包含基于您的环境可用的内容。

    【讨论】:

    • 这几乎行得通! tslint 还在抱怨它! $#@$#@$#@。我会告诉它忽略这个检查。
    • #@!#@!#!@ 我找不到禁用此消息的方法!它是 tslint 或 PyCharm。
    • 你收到什么信息?
    • 这是 PyCharm,而不是 tslint(我已禁用 tslint,问题仍然存在)。我在异步回调下得到一条红色波浪线,其中包含完全相同的消息 - 没有 Promise 构造函数或 es2015 不在 lib 中。代码转译并正常运行,所以这可能是 PyCharm 的错误。
    • 我最终将回调放在它自己的异步函数中,然后将该函数传递给 addListener。代码现在看起来更漂亮了,没有波浪状的红线。
    猜你喜欢
    • 2017-05-20
    • 2021-11-07
    • 2019-12-18
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多