我在Ionic / Angular中有以下界面(为清晰起见,减去细节),这就是我使用Typescript / ES6的原因:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tel="http://service.example/" xmlns:ent="http://schemas.datacontract.org/2004/07/Service.Contract">
<soapenv:Header/>
<soapenv:Body>
<tel:InsertObject>
<!--Optional:-->
<tel:object>
<!--Optional:-->
<ent:Date>2018-02-15T11:05:00</ent:Date>
<!--Optional:-->
<ent:Time>01:00:00</ent:Time>
<!--Optional:-->
<ent:ID>0</ent:ID>
<!--Optional:-->
<ent:Name>TestName</ent:Name>
</tel:object>
</tel:InsertObject>
</soapenv:Body>
</soapenv:Envelope>
我需要编写一个函数来表示ingoing表对象,但是表中的checkins都按其状态进行过滤。
这是我提出的功能:
export interface Item {
statusOfItem: string;
}
export interface checkin {
items: Array<Item>;
}
export interface table {
checkins: Array<Checkin>;
}
我想使用像地图等新的数组函数。这可以更有效地完成/编写(例如,没有transformTable(table: Table, status: string): Table{
let newTable: Table = table;
newTable.checkins = table.checkins.map(
checkin => {
let newCheckin: Checkin = checkin;
newCheckin.items = checkin.items.filter(
item => item.statusOfItem == status
);
return newCheckin;
}
)
return newTable;
}
)。
任何帮助或反馈都会非常适用。
答案 0 :(得分:1)
我相信您不需要将函数的参数重新设置为新的let
变量。只要按原样使用它们。
transformTable(table: Table, status: string): Table{
table.checkins = table.checkins.map(checkin => {
checkin.items = checkin.items.filter( item => item.statusOfItem == status )
return checkin
})
return table
}
这也应该有用。无论如何,我一直这样做,并且它有效:)
答案 1 :(得分:0)