"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); // eslint disable lowerCamelCase const assert_1 = __importDefault(require("assert")); const mod_1 = require("../src/mod"); class Employee { name; static company; constructor(name) { this.name = name; } info() { console.info(`Employee ${this.name}, Company ${this.constructor.company}`); } } console.info(` # Example 1: cloneClass() `); const GoogleEmployee = (0, mod_1.cloneClass)(Employee); GoogleEmployee.company = 'Google'; const MicrosoftEmployee = (0, mod_1.cloneClass)(Employee); MicrosoftEmployee.company = 'Microsoft'; const employeeGg = new GoogleEmployee('Tom'); const employeeMs = new MicrosoftEmployee('Jerry'); employeeGg.info(); // Output: Employee Tom, Company Google employeeMs.info(); // Output: Employee Jerry, Company Microsoft console.info(` # Example 2: instanceToClass() `); const RestoreGoogleEmployee = (0, mod_1.instanceToClass)(employeeGg, Employee); (0, assert_1.default)(RestoreGoogleEmployee === GoogleEmployee, 'Should get back the Class which instanciated the instance'); (0, assert_1.default)(RestoreGoogleEmployee !== Employee, 'Should be different with the parent Class'); const anotherEmployee = new RestoreGoogleEmployee('Mary'); anotherEmployee.info(); // Output: Employee Mary, Company Google console.info(); //# sourceMappingURL=example.js.map