TS2585:“ Promise”仅指一种类型,但此处被用作值

时间:2019-01-02 23:14:48

标签: node.js typescript rxjs es6-promise

我遇到以下错误

  

node_modules / rxjs / internal / Observable.d.ts:82:59-错误TS2585:“ Promise”仅引用一种类型,但在此处用作值。您是否需要更改目标库?尝试将list(filter(lambda x: x != None, [x if arr[arr.index(x)+1] < x else None for x in arr])编译器选项更改为es2015或更高版本。

格式化后看起来像这样

lib

但是我要运行的代码是正确的示例,

node_modules/rxjs/internal/Observable.d.ts:82:59 - error TS2585: 'Promise' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.                                                                   

82     toPromise<T>(this: Observable<T>, PromiseCtor: typeof Promise): Promise<T>;                                                                    
                                                             ~~~~~~~


Found 1 error.

我有import { range } from 'rxjs'; import { map, filter } from 'rxjs/operators'; range(1, 200).pipe( filter(x => x % 2 === 1), map(x => x + x) ).subscribe(x => console.log(x));

tsconfig.json

我正在Node v11.6.0下运行Rx.js 6.3.3,TypeScript 3.2.2。我尝试过

"target": "ES2018",                                                                                       
"module": "es2015",   
"lib": ["es2015"],

以及更改npm i --save-dev @types/es6-promise lib的几乎所有组合

我的ts配置就是这样,

module

4 个答案:

答案 0 :(得分:0)

问题

TypeScript有两种模式。

  1. 项目构建器模式(在无参数的情况下调用tsc
  2. 一种编译模式(当使用任何参数调用tsc时)不会从配置文件tsconfig.json中读取

如果这听起来令人困惑,那么当您考虑时更令人困惑

  1. 编译器模式接受配置文件的标志称为--project
  2. 在项目构建器的配置文件中,该编译指示称为“ compilerOptions”
  3. 编译器模式和项目构建器模式接受相同的配置文件

无论如何,这里的问题是TypeScript只是忽略了我正在其中运行它的当前工作目录中的配置文件。

如果您想在此处查看此更改的投票,

这在这里进一步报道,

答案 1 :(得分:0)

对于我来说,我只是添加了一个具有以下内容的tsconfig.json文件,其中与上述错误相关的重要部分是"target": "es2015"

{
    "compilerOptions": {
        "noImplicitAny": false,
        "noEmitOnError": true,
        "removeComments": false,
        "sourceMap": true,
        "target": "es2015"
    },
    "include": [
        "file.ts"
    ],
    "exclude": [
        "node_modules",
        "wwwroot"
    ]
}

答案 2 :(得分:0)

在编译时使用它。

tsc async_await.ts --lib es2015

答案 3 :(得分:0)

只需从npm安装@ types / node。这应该可以解决问题。

npm install @types/node