打字稿错误:找不到姓名'承诺'

时间:2016-09-07 04:05:37

标签: angular typescript ionic2

我的项目目前正在使用Angular RC4进行Ionic2 Beta 11。问题是我需要链接如下(我使用的插件返回一个promise):

    this.dataService.loginWithFacebookNative()
    .then(
        result => {
            console.log(result)
            return result;
        },
        error => {
            console.log(error);
            if (error == 'cordova_not_available') return this.dataService.loginWithFacebook();

            return Promise.reject(error.message || error); // Here is the ts error
        })
    .then(value => {
        console.log(value);
        // Logic if login was a success
    })
    .catch(error => {
        console.log(error);
        if (error) {
            this.error = error;
        }
    })

虽然App本身正在按预期工作,但是Typescript返回了一个错误,说明了

[ts] Cannot find name 'Promise'

我不知道从哪里获得Promise。

3 个答案:

答案 0 :(得分:0)

  

我不知道从哪里获得Promise。

最快的方法是将lib设置为es6,dom进行编译。

更多

https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html#lib-option

替代

  • 引入es6.promise.d.ts
  • 目标es6(绝对不是你想要的当前javascript引擎)。但是如果使用像babel这样的另一个转发器(我推荐这种复杂的工作流程),则可以使用。

答案 1 :(得分:0)

有两个选项

  1. 从DefinitelyTyped:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/es6-promise/es6-promise.d.ts
  2. 添加输入
  3. 在TypeScript Build中选择ECMAScript版本6。这需要符合ECMAScript 6的javascript引擎。

答案 2 :(得分:0)

如果您的经验找不到名称'Promise'。,大多数情况下您已经更改了基本设置中的某些文件,或者您可能没有成功完成节点包安装。 Angular2不再使用打字包。

溶液:

克隆以下存储库https://github.com/angular/quickstart 在项目目录中运行npm install并确保它成功完成 现在将您的应用程序项目文件夹复制并配置到克隆的新文件夹中,现在这将完美地运行。