2017-10-28 13 views
1

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()を使用できます。同じオブジェクトであっても。それでは、店内にいないのはなぜですか?それは私の輸入の問題ですか?

答えて

0

大丈夫 - 額と壁の間の多くの集中的な会議の後、私は自分自身で問題を解決したようです。

は私のようなImmutable.jsライブラリインポート:

import * as Immutable from 'immutable'; 

をそして私はそうのようなオブジェクト(のためのインタフェース)にインスタンス化:

action?: Map<any, any> 

それがされている必要があります

action?: Immutable.Map<any, any> 

明らかにこれは機能します。

これは明らかなようですが、Immutable.map.isMap()がtrueを評価したために投げられました。

関連する問題