clone-class
Version:
Clone an ES6 Class as Another Class Name for Isolating Class Static Properties.
29 lines • 916 B
JavaScript
// tslint:disable-next-line:variable-name
function cloneClass(OriginalClass) {
for (const staticProperty in OriginalClass) {
/**
* 1. Skip the name with a captial letter,
* like: Type
*/
if (/^[A-Z]/.test(staticProperty)) {
continue;
}
/**
* 2. Check wether the property is initialized
*/
if (typeof OriginalClass[staticProperty] === 'object') {
throw new Error('static property initialized to an object with defination is not supported with cloneClass.');
}
}
class AnotherOriginalClass extends OriginalClass {
constructor(...args) {
super(...args);
}
}
Reflect.defineProperty(AnotherOriginalClass, 'name', {
value: OriginalClass.name,
});
return AnotherOriginalClass;
}
export { cloneClass, };
//# sourceMappingURL=clone-class.js.map