TypeScript找不到名字' Promise' intellisense错误

时间:2017-01-16 14:10:05

标签: typescript2.0

我在TypeScript 2.1.4中遇到一个红色波浪形的智能感知错误,Visual Studio 2015 Update 3说找不到名字'承诺' ,例如以下代码显示错误关于Promise的两种用法:

/// <reference path="../typings/index.d.ts" />
import 'fetch';
import {HttpClient, json} from 'aurelia-fetch-client';
import {inject} from 'aurelia-framework';
import {BearerToken} from './common/bearer-token';

export class ApiToken
{
....
    public getTokenSimplified(): Promise<BearerToken>
    {
        let tokenResult: BearerToken;

        let p = new Promise<BearerToken>(function (resolve, reject)
        {
            // my code ommited
        });
        return p;
    }
....
}

TypeScript编译时没有错误,所以我可以使用它,但我想找到一个解决方案。有谁知道如何解决这个问题?研究过StackOverflow和Github后,我尝试了以下内容:

  • npm install es6-promise --save,并从&#39; es6-promise&#39;导入{Promise}添加到源文件的顶部

    这确实会导致红色波浪线消失但导致构建错误&#34;类型承诺不能分配给Promise类型。存在两个具有此名称的不同类型但它们不相关。&#34;

    安装和引用npm的ts-promise会产生相同的&#34;存在两个具有此名称的不同类型&#34;错误。

  • typings install dt~es6-shim --save --global

    这导致重复定义,例如重复的标识符&#39; PropertyKey&#39;在lib.es2015.core.d.ts

  • typings install dt~es6-promise --save --global

    这导致错误重复标识符&#39;承诺&#39;在lib.es2015.iterable.d.ts

  • 输入安装bluebird --source npm --save

    这失败了编译时错误&#34; Type Promise不能分配给&#39; Bluebird&#39;&#34;&#34;因为HttpClient返回Javascript Promises,而不是Bluebird承诺。

  • npm install es6-shim --save和npm install @ types / es6-shim --save-dev

    这导致重复定义,例如重复的标识符&#39; PropertyKey&#39;在lib.es2015.core.d.ts

  • npm install es6-promise --save和npm install @ types / es6-promise --save-dev

    导致错误重复的标识符&#39;承诺&#39;在lib.es2015.iterable.d.ts

  • 在tsconfig.json中
  • ,修改&#34; lib&#34;:[&#34; es2015&#34;,&#34; dom&#34;]到&#34; lib&#34;: [&#34; es2015&#34;,&#34; es2015.promise&#34;,&#34; dom&#34;]没有解决问题。

tscconfig.json如下:

{
  "compileOnSave": false,
  "compilerOptions": {
    "rootDir": "src",
    "outDir": "dist",
    "sourceMap": true,
    "target": "es5",
    "module": "amd",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "lib": ["es2015", "dom"],
    "baseUrl": "./",
    "paths": {
      "src/*": ["src/*"]
    }
  },
  "filesGlob": [
    "./src/**/*.ts",
    "./test/**/*.ts",
    "./typings/index.d.ts",
    "./custom_typings/**/*.d.ts",
    "./jspm_packages/**/*.d.ts"
  ],
  "exclude": [
    "node_modules",
    "jspm_packages",
    "dist",
    "build",
    "test"

  ],
  "atom": {
    "rewriteTsconfig": false
  }
}

也许我没有正确引用所需的库,所以如果有人能指出错误,我会很感激。

1 个答案:

答案 0 :(得分:1)

为libs试试这个配置

"lib": ["es2015", "dom", "es6"]

如果缺少其他类型(RequestResponseBufferSource URLSearchParams,...),请发送您的typings.json文件。