2016-07-21 6 views
0

私の状態オブジェクトを不変のImmutable.jsオブジェクトに変更しようとしていますが、型定義に大きな問題があります。私はネット上で同様の問題を見つけようとしましたが、本当に役立つものは何も見つかりませんでした。Immutable.jsをReduxとTypeScriptで使用するには?

私はImmmutableオブジェクトに変換したい次の状態があります。

export interface PostState { 
    ids: number[]; 
    entities: { [id: number]: Post}; 
    loading: boolean; 
    error: string; 
}; 

export interface Post { 
    id: number; 
    comments: { 
    ids: number[]; 
    loading: boolean; 
    } 
}; 

お勧めはありますか? Immutable.jsの不変性を保証するために、これらのインタフェースをどのように定義する必要がありますか?

答えて

0

Immmutableオブジェクトに変換します。

基本

2偉大なJavaScriptの構造は以下のとおりです。(またListなどと呼ばれる)Object(もHashMapMap呼ばれる呼ばDictionaryとして使用)とArray

サンプルあなたは1つの地図持っているあなたの状態で

entities: { [id: number]: Post}; 

といくつかの配列などを地図、不変のために

ids: number[]; 

変換

は、独自の構造を有する:リストについてはhttps://facebook.github.io/immutable-js/docs/#/Map

があります:あなたは、例えば期待まさにhttps://facebook.github.io/immutable-js/docs/#/List

宣言

は、 ; `などImmutable.Map <番号、郵便>:` `実体になり; - :Listのために:{ポスト[ID:番号]}

ids: number[];あなたは(`実体が言ったように>ids: List<number>

+0

私がすべてを変えました)。しかし、このインタフェースからオブジェクトを初期化したい場合、エンティティに値を設定せずにエラーが発生します。エンティティを 'エンティティ:Immutable.Map ;に変更するとエラーが解消され、タイプ定義も同様です。したがって、私は再び出発点になります。 – Daskus

+1

immutable.jsで問題が発生しています。角度2とタイポスクリプトも同様です。私の質問を参照してください:http://stackoverflow.com/questions/38448132/how-to-declare-empty-immutable-set-in-typescript。私が答える人に、文書を投稿するだけではなく、実際のコードで回答を確認してもらうようにお願いします。 – hholtij

関連する問題