如何减少类型的属性分配(销毁,...)?

时间:2019-05-26 20:41:06

标签: javascript

如何减少以下内容的键入:

class C {
    Constructor(a,b,c,d,e,f) {
       this.a=a;
       this.b=b; 
       this.c=c; 
       this.d=d; 
       this.e=e; 
    }
}

这样做:

class C {
    Constructor(param: [a,b,c,d,e,f]) {
       this=param;
    }
}

但是此语法不起作用

1 个答案:

答案 0 :(得分:5)

改为传入一个对象,然后使用Object.assign

class C {
  constructor(obj) {
    Object.assign(this, obj);
  }
}

const c = new C({ a: 'a', b: 'b', c: 'c', d: 'd', e: 'e' });
console.log(c);

请注意,constructor必须小写。

您还可以使用参数休止符语法,从而在调用new C时避免重新排列:

class C {
  constructor(...args) {
    const props = ['a', 'b', 'c', 'd', 'e'];
    const obj = Object.fromEntries(
      args
        .slice(0, 5)
        .map((val, i) => [props[i], val])
    );
    Object.assign(this, obj);
  }
}

const c = new C('a', 'b', 'c', 'd', 'e');
console.log(c);

如Bergi所述,您也可以在Array.prototype.entries上致电props,以减少代码数量:

class C {
  constructor(...args) {
    const props = ['a', 'b', 'c', 'd', 'e'];
    for (const [i, prop] of props.entries()) {
      this[prop] = args[i];
    }
  }
}

const c = new C('a', 'b', 'c', 'd', 'e');
console.log(c);