TypeScript 2'在IDE中找不到名称Promise'错误

时间:2016-10-20 07:58:14

标签: typescript typescript2.0

我已经尝试了目标es6,但它给了我很多编译错误。没有目标es6一切都很好,但IDE(工作室代码,webstorm)一直告诉我,找不到名字Promise。这是因为编辑器中的TypeScript检查。

有人有这个错误吗?实际上很烦人。总是有红色的承诺。

TypeScript 2.0.3,WebStorm也用2.0.3检查

4 个答案:

答案 0 :(得分:0)

您可以复制所需的lib.es6.d.ts相关部分。

Promise there的定义是:

interface Promise<T> {
    then(onfulfilled?: ((value: T) => T | PromiseLike<T>) | undefined | null, onrejected?: ((reason: any) => T | PromiseLike<T>) | undefined | null): Promise<T>;
    then<TResult>(onfulfilled: ((value: T) => T | PromiseLike<T>) | undefined | null, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<T | TResult>;
    then<TResult>(onfulfilled: (value: T) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): Promise<TResult>;
    then<TResult1, TResult2>(onfulfilled: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>;
    catch(onrejected?: ((reason: any) => T | PromiseLike<T>) | undefined | null): Promise<T>;
    catch<TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<T | TResult>;
}

PromiseLike的那个:

interface PromiseLike<T> {
    then(
        onfulfilled?: ((value: T) => T | PromiseLike<T>) | undefined | null,
        onrejected?: ((reason: any) => T | PromiseLike<T>) | undefined | null): PromiseLike<T>;
    then<TResult>(
        onfulfilled: ((value: T) => T | PromiseLike<T>) | undefined | null,
        onrejected: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<T | TResult>;
    then<TResult>(
        onfulfilled: (value: T) => TResult | PromiseLike<TResult>,
        onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): PromiseLike<TResult>;
    then<TResult1, TResult2>(
        onfulfilled: (value: T) => TResult1 | PromiseLike<TResult1>,
        onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
}

把它放在你自己的.d.ts文件中并使用它。
如果您需要更多部件,请从lib.es6.d.ts

中取出

答案 1 :(得分:0)

您应该在tsconfig.json中添加所有必需的声明。在你的情况下它

{
  "compilerOptions": {
     "lib": ["es6","dom"]
  }
}

默认情况下,ts使用包含PromiseLike但不包含Promise

的es5定义

答案 2 :(得分:0)

解决方案是:将您的文件添加到tsconfig.json&#34;文件&#34;:

{
  "files": [
    "./src/your-file.ts",
    "./typings/index.d.ts"
  ]
}

如果您的文件未添加到tsconfig中,IDE无法为其提供类型。

答案 3 :(得分:0)

对我而言我刚刚做了

import { promise } from 'protractor'

一切都很好