我是(相當)新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?)在終端中運行時,在標題中出現錯誤,但運行網站時腳本運行得很好。沒有問題。只是在終端的錯誤。
如果我嘗試在action-object上運行Immutable.map.isMap(),它將返回true。 get()和set()方法似乎也存在於對象上。所以如果它實際上是一個Map和set()和get()的作品 - 爲什麼不setIn()和getIn()?要清楚 - 他們確實工作 - 完美。我只是在終端出現錯誤。
我可以在應用程序的其他地方使用setIn()和getIn()。即使在同一個對象上。那麼爲什麼不在store.ts?我的進口產品有問題嗎?