参数类型函数(游戏,字符串)不能分配给参数类型PartialObserver <game> | function(Game):void

时间:2016-10-17 13:00:14

标签: angular rxjs

我有一个简单的Angular 2服务,我用它来创建单向数据流。因此,该服务公开了操作(action$),组件可以调用action$.next(game)。该服务订阅此操作并重新发送给所有侦听器。

constructor() {
    this.action$ = new Subject();

    // Subscribe to actions
    this.action$.subscribe(this.handleAction);
}

  handleAction(game: Game, playerId: string) {}

但是,我收到了错误:

Argument type function(Game, string) is not assignable to parameter type PartialObserver<Game>|function(Game): void

如果我删除了playerId: string,那么它可以正常运行,但我不明白function(Game): void定义的来源。

1 个答案:

答案 0 :(得分:0)

  

但我不明白函数(游戏):void定义来自哪里

回调应该只有一个参数,即observable传递给你的数据。

错误告诉我们允许什么作为参数:

  1. PartialObserver<Game>
  2. 的实例
  3. function(Game)(一个带Game参数的函数)
  4. 当您想说两种类型(使用|

    时,这是TypeScript语法
    let something: number|string;        // something can be a number or string
    
    function doit(id: number|string) {}  // you can pass a number or string
    

    subscribe的签名是

    subscribe(observer: PartialObserver<Game>|function(Game) => void)