如何动态地将值从一个对象复制到'this'而不修改Typescript中的目标?

thtygnil  于 2023-03-13  发布在  TypeScript
关注(0)|答案(1)|浏览(123)

我到处找了找,还是没有找到一个可行的答案。
如何动态地将值从一个对象Map到'this',而不修改Typescript中的目标

const bigTodo = {
  name: "aaaaaaa",
  unwantedProperty: "Nooooooo"
}

.....

export class SmallTodo {
    name: string;

    constructor(bigTodo: any){
        _.assign(this,bigTodo)       // NOT working
        _.assignIn(this,bigTodo)     // NOT working
        _.merge(this,bigTodo)        // NOT working
        _.extend(this,bigTodo)       // NOT working
        Object.assign(this, fields); // NOT working

        for (const prop in bigTodo.keys()) { 
          if (this.hasOwnProperty(prop)) {
            this[prop] = bigTodo[prop]; // NOT working not compatible with type 'any'
          }
        }
    }
}

预期结果:

SmallTodo = {
    name: "aaaaaaa"
}

意外结果:

SmallTodo = {
    name: "aaaaaaa",
    unwantedProperty: "Nooooooo"
}
lnvxswe2

lnvxswe21#

当你用某个值初始化属性的时候,你可以调用getOwnProperty。

const bigTodo = {
  name: "aaaaaaa",
  unwantedProperty: "Nooooooo"
}

class SmallTodo {
  name: string = "";

  constructor(bigTodo: any) {    
    for (const prop in bigTodo) {
      if (this.hasOwnProperty(prop)) {
        this[prop as keyof typeof this] = bigTodo[prop];
      }
    }
  }
}

console.log(new SmallTodo(bigTodo));
console.log(bigTodo);

相关问题