如何减少以下内容的键入:
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;
}
}
但是此语法不起作用
答案 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);