UNPKG

clone-class

Version:

Clone an ES6 Class as Another Class Name for Isolating Class Static Properties.

29 lines 916 B
// 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