【问题标题】:Argument of type 'void' is not assignable to parameter of type 'Action'“void”类型的参数不能分配给“Action”类型的参数
【发布时间】:2017-04-05 15:32:19
【问题描述】:

我是 Typescript 的新手并使用 VSCode。

出现以下错误:

*[ts] “void”类型的参数不能分配给“Action”类型的参数。 (参数)动作:无效

代码:

  loadItems() {
    return this.Apiname.find()
        .map(
        (data) => console.log("data:", data)
        )
        .map(
        payload => ({
            type: 'LOAD_ITEMS',
            payload: payload
        },
        )
        )
        .subscribe(
        action => this._store.dispatch(action)//Error
        );
};

任何帮助都会非常有帮助。

【问题讨论】:

  • 第一个.map回调没有返回任何东西,试试改成.map( (data) => { console.log("data:", data); return data; } )

标签: typescript visual-studio-code


【解决方案1】:

您的 map 语句包含尾随 ,,这可能是问题所在。我会这样调整代码:

return this.Apiname.find()
    .do( (data) => console.log("data:", data) )
    .map(
        payload => ({
            type: 'LOAD_ITEMS',
            payload: payload
        //},)
        })
    )
    .subscribe(
        action => this._store.dispatch(action) // no error
    );

现在action 的类型为{ type: string, payload: ... }

注意:对于副作用,例如使用 console.log 打印,ReactiveX 提供 .do 运算符 - 请参阅 http://reactivex.io/documentation/operators/do.html

【讨论】:

  • 很高兴看到这一点 ;)
猜你喜欢
  • 2023-04-05
  • 1970-01-01
  • 2022-01-24
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2020-08-28
  • 1970-01-01
相关资源
最近更新 更多