【问题标题】:Typescript cannot find name 'Promise' despite using ECMAScript 6尽管使用 ECMAScript 6,Typescript 找不到名称“Promise”
【发布时间】:2016-03-13 15:21:21
【问题描述】:

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

TS2304 找不到名称“Promise”

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

我已经试过了

没有成功,但在第二个链接中,他们说它应该适用于设置为 6 的 ECMAScript 版本,但它对我没有任何改变。

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

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

TS1311 异步函数仅在面向 ECMAScript 6 及更高版本时可用。

那么新的问题:我在哪里设置 IntelliSense 使用的 ECMAScript 版本?

【问题讨论】:

  • 您正在使用target: "es6" ?这对我有用。在定位es5 时,我不得不使用提到的es6-promise 库和import {Promise} from "es6-promise"
  • 嗯,我在项目属性中选择了ECMAScript 6,是否也需要在其他地方设置它?
  • 听起来不错,我在 IntelliJ IDEA 中使用了 tsconfig.json
  • 我认为我不允许在 Visual Studio 中使用 tsconfig.json 文件。至少这是我从github.com/Microsoft/TypeScript/issues/3983 中收集到的信息
  • 嗯,抱歉不熟悉 Visual Studio,抱歉。它可以从命令行工作吗?

标签: javascript typescript visual-studio-2015 es6-promise


【解决方案1】:

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

如果您使用的是 Nuget,只需从包管理器控制台安装:

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

【讨论】:

  • 我通过打字做到了这一点,但它没有帮助。我现在注意到的是,如果我按保存(保存时编译处于活动状态),它构建得很好,但是如果我按开始按钮,编译会失败。
  • @Andreas add /// 在需要 Promise 声明的文件顶部
  • 在面向 ES6 时不应该是必需的。
猜你喜欢
  • 2016-11-01
  • 2015-07-27
  • 2017-02-01
  • 2017-05-31
  • 2016-05-23
  • 2016-11-05
  • 2018-08-29
  • 1970-01-01
  • 2016-01-24
相关资源
最近更新 更多