gpt4 book ai didi

javascript - 如何在 Typescript 中合并类实例?

转载 作者:搜寻专家 更新时间:2023-10-30 21:08:13 24 4
gpt4 key购买 nike

我有这样一个类:

class Person {
private _age: number;

get age(): number {
return this._age;
}

set age(value: number) {
this._age = value;
}
}

以及该类的一个实例:

let peter = new Person();
peter.age = 30;

我想通过简单地使用展开运算符来拥有该类的另一个实例:

let marc = {
...peter,
age: 20
}

但这不会产生 Person 的实例,而是产生一个没有 Person 的 getter 和 setter 的对象。

是否有可能以某种方式合并类实例,或者我是否需要为 mark 再次使用 new Person()

最佳答案

Spread 语法应该生成普通对象,因此它不适用。如果需要新的类实例,则应使用 new 创建。如果一个对象必须与其他属性合并,可以使用 Object.assign:

let marc = Object.assign(
new Person()
peter,
{ age: 20 }
);

由于 Object.assign 处理自己的可枚举属性,结果可能是不希望的或意外的,具体取决于类内部结构;它会从 peter 复制私有(private) _age 但不会复制 public age

在任何特殊情况下,类都应该实现诸如 clone 之类的实用方法,该方法了解类内部并正确创建实例。

关于javascript - 如何在 Typescript 中合并类实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49937677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com