【问题标题】:Typescript - property scan does not exist on type Subject...?打字稿-主题类型上不存在属性扫描...?
【发布时间】:2018-05-23 14:58:00
【问题描述】:

我无法在 Visual Studio 代码编辑器上编译 this 代码。首先,我收到了类似has no exported member 'X', X for BehaviorSubject, Subject 的错误。 因此,我将导入语句更改如下:

import { BehaviorSubject } from 'rxjs';
import { Subject } from 'rxjs';

这使导入错误消失了。 但是,现在我在尝试使用 tsc 命令编译它时收到以下错误:

我将发射更改为下一个,这解决了property 'emit' does no exist 错误。但是property 'scan' does not exist 错误仍然存​​在。我认为这与 .json 文件中的设置有关。但我不知道应该更改什么设置。

那么,我在这里想念什么?任何帮助深表感谢。如果你得到代码编译,你能描述一下你是怎么做的吗?

【问题讨论】:

    标签: typescript emit subject behaviorsubject


    【解决方案1】:

    emit 是一种特定于 Angular EventEmitter 的方法,目前依赖于 RxJS Subject

    由于EventEmitter 专门设计用于处理更改检测,因此不建议将其用作 Angular 应用程序中的通用主题。

    EventEmitter emit 是主题 Subject next 方法的包装,因此 emit 应替换为 next

    scan 运算符应使用以下命令导入:

    import 'rxjs/add/operator/scan';
    

    这已经在链接代码中完成了。

    【讨论】:

    • 感谢您的回答。我将发射更改为下一个。那部分现在看起来还可以。但是由于扫描运算符,我无法编译它。我认为它必须与 json 文件有关。但由于我刚开始输入 Angular 和 TypeScript,我目前无法解决它。拜托,你能自己编译一下,看看你是否得到同样的错误?如果你编译成功,你能给我你所采取的步骤吗?非常感谢。
    • 你链接的文件夹,redux/redux-chat/tutorial 文件不应该被编译。似乎它应该与 ts-node 一起运行。 package.json 中指定的 ts-node 版本存在问题。我已经全局安装了它(npm i -g ts-node@3 如果你没有它),ts-node ./06b-rx-store.ts 会导致错误,但没有你指的错误。
    • redux/redux-chat 项目中也缺少包,尝试在那里运行npm i -S rxjs-compat。我不得不删除 redux/redux-chat/tutorial/06b-rx-store.ts 中的第一行,/// <reference... 并将 redux/redux-chat/tutorial/tsconfig.json 中的 noEmitHelpers 选项从 true 更改为 @ 987654341@。然后就跑了。整个回购是一团糟,开箱即用。我建议在回购问题中报告这一点。
    • 很高兴它成功了。这是一个艰难的经历,考虑到这些是为那些读过这本书的开发者提供的例子,而且还不应该了解整个事情。我猜这些是来自与图书作者无关的开发人员的示例。
    猜你喜欢
    • 2017-03-02
    • 2021-09-07
    • 2020-08-13
    • 2017-08-07
    • 2017-03-26
    • 2017-09-06
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多