Javascript 如何分解或优化typescript代码?
在我的typescript类中,我有Javascript 如何分解或优化typescript代码?,javascript,angular,typescript,destructuring,Javascript,Angular,Typescript,Destructuring,在我的typescript类中,我有skip函数。在我的界面中我提到了来自后端的数据。 在前端上,我想重命名后端变量,如下所示。有多个变量,如何优化代码 我想过使用解构概念,但不知道如何使用。我需要帮助 this.recordId = data?.data1; this.oldValue = data?.data2; this.newValue = data?.data3; ............// many more ts功能 skip(rec: ABC) {
skip
函数。在我的界面中
我提到了来自后端的数据。
在前端
上,我想重命名后端变量
,如下所示。有多个变量,如何优化代码
我想过使用解构概念,但不知道如何使用。我需要帮助
this.recordId = data?.data1;
this.oldValue = data?.data2;
this.newValue = data?.data3;
............// many more
ts功能
skip(rec: ABC) {
const { data1, data2, data3 } = rec;
this.records.skip({ data1, data2, data3}).subscribe(data => {
this.recordId = data?.data1; ---------------------------->Here
this.oldValue = data?.data2; ---------------------------->
this.newValue = data?.data3; ---------------------------->
............// many more
this.processIncomingRecord(data);
});
}
记录
export interface ABC {
data1: number;
data2: number;
data3: number;
}
像这样的东西可能会有帮助。您可以创建一个辅助“助手”映射对象(此处为
MapABCToDEF
),该对象将键从ABC
映射到其前端键名称。然后,您可以使用“”功能(TS 4.1及更高版本)构造前端类型(此处显示为DEF
)
这将有助于在您可能需要的地方提供更好的类型信息。理想情况下,您只需使前端和后端的数据名称保持一致。也就是说,不要在后端使用data1
,在前端使用recordId
,这将导致不必要的复杂性和混乱。只需选择一个或另一个,并将其标准化
对于重命名本身,映射对象MapABCToDEF
可以帮助您以一致且强制类型的方式简化向此
分配键/值的过程:
const abc: ABC = {
data1: 100,
data2: 200,
data3: 300
}
// ...
const keys = Object.keys(abc) as Array<keyof typeof abc>;
keys.forEach(eaKey => {
this[MapABCToDEF[eaKey]] = abc[eaKey];
});
const abc:abc={
数据1:100,,
数据2:200,
数据3:300
}
// ...
常量键=对象键(abc)作为数组;
keys.forEach(eaKey=>{
这个[MapABCToDEF[eaKey]=abc[eaKey];
});
我不确定您在这里是否有好的选择。如果您想将它们重命名并作为成员添加到类中,我认为最好的方法是如何完成,尽管我承认这非常冗长。我想您可以使用Object.assign(这个,{recordId:data1,oldValue:data2,newValue:data3})
,但它不会为您节省太多的typeingtanks@mhodges。我还没有找到更好的解决办法
const abc: ABC = {
data1: 100,
data2: 200,
data3: 300
}
// ...
const keys = Object.keys(abc) as Array<keyof typeof abc>;
keys.forEach(eaKey => {
this[MapABCToDEF[eaKey]] = abc[eaKey];
});