【问题标题】:rxjs typescript error Argument of typerxjs typescript error 类型参数
【发布时间】:2016-11-07 04:37:34
【问题描述】:

我有这样的代码取自 rxjs 示例:

 Observable.fromEvent(this.getNativeElement(this.right), 'click')
      .map(event => 10)
      .startWith({x: 400, y: 400})
      .scan((acc, curr) => Object.assign({}, acc, {x: acc.x + curr}))
      .subscribe(position => this.position = position);

打字稿给出这样的错误:

[ts] Argument of type '{ x: number; y: number; }' is not assignable to parameter of type 'number | Scheduler'.
       Object literal may only specify known properties, and 'x' does not exist in type 'number | Scheduler'.

如何解决?

【问题讨论】:

  • 您已经将所有发出的事件映射到一个数字文字 - .map(event => 10) - 所以每次触发事件时,observable 都会发出 10。 (为什么?)TypeScript 已正确推断出 Observable<number> 类型,但您随后指定了一个非数字起始值,这就是导致错误的原因。
  • @cartant 这只是我正在查看的一个示例。有没有更好的方法来避免错误?
  • @sreginogemoh 他的意思是你的例子没有意义。你得到的错误是合法的。一个可观察的数字如何从一个不是数字的对象开始?您的代码内容存在逻辑错误,打字稿指出了这一点。

标签: typescript rxjs rxjs5


【解决方案1】:

您始终可以强制 TypeScript 通过类型转换为 any 来忽略类型检查。在您的情况下,这可能是:

.map(event => <any>10)

顺便说一句,有一个 mapTo() 运算符可以将所有项目转换为常量值。

【讨论】:

    猜你喜欢
    • 2018-07-20
    • 1970-01-01
    • 2020-06-30
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 2021-07-10
    相关资源
    最近更新 更多