2016-07-21 67 views
0

我試圖將我的狀態對象更改爲不可變的Immutable.js對象,但是我對類型定義有很大的麻煩。我試圖在網上找到類似的問題,但無法找到有用的東西。如何在Redux和TypeScript中使用Immutable.js?

我有我想要轉換成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對象。

基本

兩個偉大的JavaScript結構是:Object(用作Dictionary也被稱爲HashMap也稱爲Map)和Array(也稱爲List等)。

樣品

在你的國家,你有一個地圖:

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

和幾個陣列例如

ids: number[]; 

轉換

在地圖的,一成不變的擁有自己的結構:https://facebook.github.io/immutable-js/docs/#/Map

對於名單有:https://facebook.github.io/immutable-js/docs/#/List

宣言

你所期望的究竟是什麼如爲List

ids: number[]; - >ids: List<number>

+0

我改變了一切像你說('實體:{[ID:數]張貼};''變得實體:Immutable.Map <號碼,郵政>;'等)。但是當我想從這個接口初始化一個對象時,沒有在實體中設置任何值,我得到一個錯誤。如果我把'entities'改爲'entities:Immutable.Map ;'這個錯誤消失了,並且還有它的類型定義,所以我再次處於起點...... – Daskus

+1

我遇到了immutable.js和Angular 2和打字稿。看到我的問題:http://stackoverflow.com/questions/38448132/how-to-declare-empty-immutable-set-in-typescript。我可以要求那些回答的人,請用實際的代碼檢查他們的答案,而不是僅僅發佈文檔。 – hholtij

相關問題