我有一个名为Myclass
的类
class Myclass {
constructor(
public title: string,
) { }
}
在下一个示例中,我想更改展开操作的结果let myobject = new Myclass('hello');
console.log({...myobject});
要的结果例如
{
new_title_name : 'hello'
}
这是不可能的。ECMA-262规范只描述了扩展操作符处理对象的一种方式,不能覆盖它。
如果想要更改展开的键值对集合,则需要提供不同的对象。这样的对象可以通过函数、方法或属性生成:
class Myclass {
get data() {
const result = {};
for (const k in this) {
if (typeof this[k] === 'number')
result[k.toUpperCase()] = this[k];
}
return result;
}
};
const obj = new Myclass();
obj.a = [];
obj.b = null;
obj.c = 13;
obj.d = 'test';
console.info({ ...obj.data });