我正在尝试定义此Typescript函数的输出。
function (data: { topicId: number; subTopicId: number; topicName: string; subTopicName; string; }[] ) {
var output = <IAnything>{
dataMap: _.reduce(data, function (rv, v) {
rv[v.subTopicId] = v;
return rv;
}, {});
我可以映射一些我没有在这个问题中包含的部分,但我对如何制作dataMap字段感到困惑。有人可以帮助我,告诉我如何在下面的界面中映射lodash _.reduce的输出。从我可以看到这个减少的输出是:
data: { topicId: number; subTopicId: number; topicName: string; subTopicName; string; }[]
但是如何表示这个以及如何表示用于数组索引的subTopicId?
interface IAnything {
//data: { id: number; name: string; }[];
dataMap:
}
这是dataMap输出的样子:
{
"1":{"topicId":1,
"subTopicId":1,
"topicName":"x",
"subTopicName":"x"},
"2":{"topicId":1,
"subTopicId":2,
"topicName":"x",
"subTopicName":"x"},
"62":{"topicId":10,
"subTopicId":62,
"topicName":"x",
"subTopicName":"x"}
}
答案 0 :(得分:1)
您的界面应如下所示:
interface IAnything
{
dataMap: IMap
}
interface IData
{
topicId: number;
subTopicId: number;
topicName: string;
subTopicName; string;
}
interface IMap{
[key: string] : IData;
}
然后你的功能看起来像这样:
function (data: IData[]){
var output = <IAnything>{
dataMap: _.reduce(data, function (rv: IData, v: IData)
{
rv[v.subTopicId] = v;
return rv;
}, {})
};
}