Immutable.jsとRedux(およびAngular2)が新しく(タイトルがエラーです) setInおよびgetInの場合)。エラーは私のstore.tsから来ます。ここでは、短いバージョンです:。エラー: "プロパティ 'setIn'がタイプ 'マップ<any, any>'に存在しません"
import { Action as reduxAction, Reducer, combineReducers } from 'redux';
import { ActionActions } from './actions/action.actions';
import { UserActions } from './actions/user.actions';
import { MetaActions } from './actions/meta.actions';
import { Action } from './app/library/action/class.action';
import * as Immutable from 'immutable';
import 'rxjs/add/operator/map';
export interface IAppState {
action: IActionState
}
export interface IActionState {
action?: Map<any, any>
}
export const INITIAL_STATE: IAppState = {
action: {
action: null
}
}
export function actionReducer(lastState: IActionState, action)
{
// Initial action state
if (undefined === lastState) {
lastState = {
action: null
}
}
// Switching
switch(action.type)
{
case ActionActions.REMOVE_EMPLOYEE:
{
return { action: lastState.action.setIn(['employees', action.value.role],
lastState.action.getIn(['employees', action.value.role])
.filter(o => o.getIn(['employee','employeeId']) !== action.value.employeeId)) };
}
}
return { action: lastState.action }
}
は(それがのコンテキストで少し不運だ私が働いているオブジェクトはまた、「アクション」という名前のことが起こることを混同しないでくださいReduxですが、アプリケーションのコンテキストでそれは意味をなさない)。
コンパイラ(transpiler?)が端末で実行されると、タイトルにエラーが表示されますが、ウェブサイトを実行するとスクリプトはうまく動作します。全く問題なし。端末のエラーです。
アクションオブジェクトでImmutable.map.isMap()を実行しようとすると、trueを返します。また、メソッドget()とset()がオブジェクトに存在するようです。
実際にマップでset()とget()が動作する場合、なぜsetIn()とgetIn()を使用しないのですか?はっきりと - 彼らは完全に働く - 完全に。私はちょうどターミナルでエラーが発生します。
私は、アプリケーションの他の場所でsetIn()とgetIn()を使用できます。同じオブジェクトであっても。それでは、店内にいないのはなぜですか?それは私の輸入の問題ですか?