【发布时间】:2020-12-15 04:34:14
【问题描述】:
我有一个打字稿类 A 和另一个类 B 具有类 A 的所有属性。有没有办法将所有值从类 B 复制到类 A。或者有没有办法将类 A 的所有属性作为对象.
【问题讨论】:
-
您需要将变量
a: ClassA中的所有字段值复制到另一个变量b:ClassB中?
标签: javascript typescript nestjs
我有一个打字稿类 A 和另一个类 B 具有类 A 的所有属性。有没有办法将所有值从类 B 复制到类 A。或者有没有办法将类 A 的所有属性作为对象.
【问题讨论】:
a: ClassA中的所有字段值复制到另一个变量b:ClassB中?
标签: javascript typescript nestjs
我不太明白这个问题。如果您需要将所有字段值从类 1 复制到类 2,您可以使用:
Object.assign(cl2, cl1);
这是完整的示例(can test it here,只需按“运行”):
class Class1 {
public a: number = 1;
public b: number = 2;
public c: number = 3;
};
class Class2 {
public a?: number;
public b?: number;
public c?: number;
};
let cl1 = new Class1;
console.log('1 = ', cl1, cl1 instanceof Class1, cl1 instanceof Class2)
let cl2: Class2 = new Class2;
Object.assign(cl2, cl1);
console.log('2 = ', cl2, cl2 instanceof Class1, cl2 instanceof Class2);
【讨论】:
cl2 不是Class2 的实例,它自己的所有属性和方法都丢失了。
nestjs 添加为标签。
类实例是对象,因此您可以使用普通的对象原型函数。
class MyClass {
_a=0;
_b=0;
constructor(a, b){
this._a=a;
this._b=b;
}
set a(a){
return this._a = a;
}
get a(){
return this._a;
}
set b(b){
return this._b = b;
}
get b(){
return this._b;
}
}
const instance = new MyClass(2,3);
console.log("keys", Object.keys(instance))
console.log("values", Object.values(instance))
console.log("entries", Object.entries(instance))
instance.a = 5;
instance.b = 5;
console.log("keys", Object.keys(instance))
console.log("values", Object.values(instance))
console.log("entries", Object.entries(instance))
考虑到它只会返回实际参数,忽略setter和getter
【讨论】: