2014-10-19 63 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?