RxJs管道和可调运算符`map`:'this'类型的'this'上下文不能赋值给'Observable <{}>'类型的方法'this'

Max*_*kyi 63 javascript rxjs typescript

我有一个使用可出租经营者这个非常简单的例子mappipe来自rxjs@5.5:

import { map } from 'rxjs/operator/map';

let o = of(1, 2, 3, 4).pipe(
    map((v) => v * 2)
);
Run Code Online (Sandbox Code Playgroud)

但它会产生错误Error:(34, 5) TS2684:The 'this' context of type 'void' is not assignable to method's 'this' of type 'Observable<{}>'.这里的问题是什么?

Max*_*kyi 148

应该从rxjs/operators以下位置导入Lettable实例运算符:

import { map } from 'rxjs/operators';
Run Code Online (Sandbox Code Playgroud)

与从rxjs/operator以下位置导入的非可出租等价物相反 :

import { map } from 'rxjs/operator/map';
Run Code Online (Sandbox Code Playgroud)

要了解有关lettable operator read的更多信息:

  • 令人沮丧的是,VSCode似乎选择从rxjs/operator/map自动导入. (5认同)
  • 谢谢你们,这是一个难以发现的人 (4认同)
  • 对于其他可能用谷歌搜索的人:“first”也是一个可出租的运算符 (2认同)
  • 有一些捆绑问题可能需要您深入导入可管理操作符以减少捆绑包大小.在这些情况下,如果您不小心从`rxjs/operator/map`导入而不是`rxjs/operators/map`,您将会遇到此问题. (2认同)