尽管使用ECMAScript 6,但Typescript无法找到名称为'Promise'的内容

3

我目前正在尝试在Visual Studio 2015中开发一个node.js应用程序,但它一直告诉我:

TS2304 找不到名称 'Promise'

在项目设置中,我已将ECMAScript 6配置为构建系统,ES 2015配置为模块系统。

我已经尝试过:

但都没有成功,但第二个链接中说,如果ECMAScript版本设置为6,则应该可以正常工作,但对我来说并没有改变什么。

编辑:我现在进行了更多的诊断。问题似乎是IntelliSense使用的ECMAScript版本与构建系统之间存在不匹配。

通过使用更多的ECMAScript 6函数,我发现了以下IntelliSense投诉:

TS1311异步函数仅在目标为ECMAScript 6及更高版本时才可用。

因此,新问题是:我在哪里设置IntelliSense使用的ECMAScript版本?


1
你正在使用 target: "es6" 吗?这对我有效。当目标是 es5 时,我不得不使用提到的 es6-promise 库和 import {Promise} from "es6-promise". - Aaron Beall
好的,我已经在项目属性中选择了ECMAScript 6,我还需要在其他地方进行设置吗? - Andreas
听起来是这样的,我正在使用 tsconfig.json 与 IntelliJ IDEA。 - Aaron Beall
我认为在使用Visual Studio时不允许有tsconfig.json文件。至少这是我从这个链接中了解到的 https://github.com/Microsoft/TypeScript/issues/3983 - Andreas
抱歉,我不熟悉Visual Studio,很抱歉。它可以从命令行工作吗? - Aaron Beall
是的,确实如此。那么这一定是 Visual Studio 的问题。 - Andreas
1个回答

5

这似乎是一个疏忽(我也遇到了同样的问题)。如果您安装 类型定义 .d.ts 文件,就可以轻松解决问题。

如果您使用Nuget,只需在程序包管理器控制台中执行以下命令:

PM> Install-Package es6-promise.TypeScript.DefinitelyTyped

我尝试使用typings来解决这个问题,但并没有起到作用。现在我注意到的是,如果我按保存键(启用了编译保存功能),它可以成功构建,但如果我按开始按钮,则编译会失败。 - Andreas
1
@Andreas 在需要 Promise 声明的文件顶部添加 /// <reference path="../es6-promise/es6-promise.d.ts" />。 - Gregoire
在针对ES6时,这通常是不必要的。 - Andreas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接