2017-02-14 88 views
19

假設我有一個JSON有效載荷解析弄成這個樣子:Typescript:如何定義嵌套對象的接口?

{ 
    name: "test", 
    items: { 
     "a": { 
      id: 1, 
      size: 10 
     }, 
     "b": { 
      id: 2, 
      size: 34 
     } 
    } 
} 

我將如何設置該示例接口的定義模型,項目屬性的值是一個對象,它的鍵是字符串,其值由項目接口中定義:

export interface Example { 
    name: string; 
    items: ???; 

} 

export interface Item { 
    id: number; 
    size: number; 
} 
+0

您可以按照[文檔](https://www.typescriptlang.org/docs/handbook/interfaces.html#indexable-types)的說法來操作。這些被稱爲「可索引類型」。您可能希望再次瀏覽文檔 - 您會發現有用的信息,可以幫助您避免每次都在SO上提問。 – 2017-02-14 01:43:08

回答

31

打字稿允許你添加一個類型使用語法[key: string]的對象鍵。

如文檔中表示,這些被稱爲indexable types

索引的類型有描述,我們可以使用索引到的對象的類型,與相應的返回類型索引時沿指數的簽名。

在你的情況,你可以使用下列內容:

export interface Item { 
    id: number; 
    size: number; 
} 

export interface Example { 
    name: string; 
    items: { 
     [key: string]: Item 
    }; 
} 

僅供參考,這裏是一個link to a live example