Is there a way I can get all the getters results on the instance without specific invoking? I want to get all class getters as simple members on the class by looping on the class member.
I have a class like this:
export class Test {
constructor() {}
get foo() {
return 1
}
get bar() {
return 2
}
}
The use is create a new instance: const test = new Test()
Is there a way I can get all the getters as simple class variable members and not as functions? so I can pass the object from server to client.
Thanks!
class Test {
constructor() {}
get foo() {
return 1
}
get bar() {
return 2
}
}
const allGetterKeys = Object.entries(Object.getOwnPropertyDescriptors(Test.prototype)).filter(([key, descriptor]) => typeof descriptor.get === 'function').map(([key]) => key);
const test = new Test();
const out = {};
for(const key of allGetterKeys)
{
out[key] = test[key];
}
console.log(out);
The first line comes from this answer (it gets the key names of all the getters on the class). Then the for loop uses all those keys to get the output from the getter and put them into a plain object out. That object is just key value pairs.