clone-class
Version:
Clone an ES6 Class as Another Class Name for Isolating Class Static Properties.
32 lines • 1.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.cloneClass = void 0;
// 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;
}
exports.cloneClass = cloneClass;
//# sourceMappingURL=clone-class.js.map