2016-11-22 4 views
2

i'am new для машинописи и использования VSCode.Аргумент типа 'void' не присваивается параметру типа 'Action'

Получение следующей ошибки:

* [TS] Аргумент типа 'недействительным' не может быть назначен для параметра типа '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 
     ); 
}; 

Любая помощь будет очень полезно.

+0

первый обратный вызов '.map' ничего не возвращает, попробуйте изменить его на. .map ((data) => {console.log (" data: ", data); return data;})' – artem

ответ

2

В вашем заявлении 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

+0

Спасибо за его работы. – Khushi

+0

Замечательно видеть это;) –