为了希望简化我的问题,我将其分解如下:
如果这是我的对象:
{
things: [{
'text': 'version'
'short': 'v',
'order': 1,
'id': 'A'
},{
'text': 'update'
'short': 'u',
'order': 2,
'id': 'B'
}]
}
...然后这是我的类型类:
export class Thing {
text: string;
short: string;
order: number;
id: string;
}
如果这是我的数据:
{ things: {
'A': {
'text': 'version'
'short': 'v',
'order': 1,
'id': 'A'
},
'B': {
'text': 'update'
'short': 'u'
'order': 2
'id': 'B'
}
}
}
...那么类型类是...?
我尝试了一些非常有创意,没有效果的尝试,以使此方法无济于事。我也希望我能弄清楚该非数组数组(无方括号)的用途。抱歉,如果这是重复的话。
答案 0 :(得分:4)
在第二种情况下,您的things
类型将是这样的index type:
interface ThingHolder {
[key: string]: Thing;
}
这表示键是字符串,值是Thing
。
data
的接口将具有以下类型的things
属性:
interface AppropriateNameHere {
things: ThingHolder;
}
因此,编译器对此感到满意:
const data : AppropriateNameHere = {
things: {
'A': {
'text': 'version',
'short': 'v',
'order': 1,
'id': 'A'
},
'B': {
'text': 'update',
'short': 'u',
'order': 2,
'id': 'B'
}
}
};
Live Example在TypeScript游乐场。