Javascript 如何分解或优化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) {

在我的typescript类中,我有
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];
});