2014-10-19 59 views
0

我有以下的Javascript對象:如何創建一個對象集合的接口?

{ 
    "dataMap":{ 
     "2027":{ 
      "userId":2027, 
      "code":"abcdef", 
      "title":"abcdef", 
      "questions":1 
     } 
     "2028":{ 
      "userId":2028, 
      "code":"abcdef", 
      "title":"abcdef", 
      "questions":1 
     } 
    } 
} 

它包含另一個對象的數據圖和內部的其他ojbects。有人可以通過告訴我如何爲dataMap對象創建接口來幫助我嗎?

我想什麼是有一個接口,這樣我可以輸入:

var a = b.dataMap[2027].userId // okay and allowed 
var a = b.dataMap[2027].xxxyId // gives a typescript error 
+0

請明白你的意思是「interface」 – hindmost 2014-10-19 08:19:20

+1

@ behindmost A Typescript界面​​。 – Niko 2014-10-19 08:30:50

回答

1

您可以使用接口與指數的簽名:

interface User { 
    userId: number; 
    code: string; 
    title: string; 
    questions: number; 
} 

interface DataMap { 
    [index: number]: User; 
} 

併爲您的具體實例,其中數據地圖被再次包含在一個對象:

interface DataMapContainer { 
    dataMap: DataMap; 
} 

var b: DataMapContainer = { "dataMap": { ... } }; 
b.dataMap[2027].userId; // okay 
b.dataMap[2027].xxx; // error 

參見:TypeScript interface for object with arbitrary numeric property names?

相關問題