2017-02-14 666 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