类型为“void”的参数无法分配给类型为“Action”的参数

4

我是Typescript和VSCode的新手。

遇到以下错误:

*[ts] void类型的参数无法赋值给类型为'Action'的参数。 (parameter) action: void

代码:

  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
        );
};

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

1
第一个 .map 回调函数没有返回任何内容,请尝试将其更改为 .map((data) => { console.log("data:", data); return data; }) - artem
1个回答

4

你的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


很高兴看到这个 ;) - Radim Köhler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接