@terminus/ngx-tools
Version:
[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github
21 lines • 2.27 kB
JavaScript
/**
* A helper function to apply TypeScript mixins
*
* https://www.typescriptlang.org/docs/handbook/mixins.html
*
* @param derivedCtor - The mixin target class
* @param baseCtors - An array of classes to combine into the target class
* @returns The mixed class
*
* @example
* applyMixins(SmartObject, [Disposable, Activatable]);
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function applyMixins(derivedCtor, baseCtors) {
baseCtors.forEach(baseCtor => {
Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
derivedCtor.prototype[name] = baseCtor.prototype[name];
});
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktbWl4aW5zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRlcm1pbnVzL25neC10b29scy91dGlsaXRpZXMvIiwic291cmNlcyI6WyJhcHBseS1taXhpbnMvYXBwbHktbWl4aW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsOERBQThEO0FBQzlELE1BQU0sVUFBVSxXQUFXLENBQUMsV0FBZ0IsRUFBRSxTQUFnQjtJQUM1RCxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzNCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzVELFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBoZWxwZXIgZnVuY3Rpb24gdG8gYXBwbHkgVHlwZVNjcmlwdCBtaXhpbnNcbiAqXG4gKiBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9taXhpbnMuaHRtbFxuICpcbiAqIEBwYXJhbSBkZXJpdmVkQ3RvciAtIFRoZSBtaXhpbiB0YXJnZXQgY2xhc3NcbiAqIEBwYXJhbSBiYXNlQ3RvcnMgLSBBbiBhcnJheSBvZiBjbGFzc2VzIHRvIGNvbWJpbmUgaW50byB0aGUgdGFyZ2V0IGNsYXNzXG4gKiBAcmV0dXJucyBUaGUgbWl4ZWQgY2xhc3NcbiAqXG4gKiBAZXhhbXBsZVxuICogYXBwbHlNaXhpbnMoU21hcnRPYmplY3QsIFtEaXNwb3NhYmxlLCBBY3RpdmF0YWJsZV0pO1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5TWl4aW5zKGRlcml2ZWRDdG9yOiBhbnksIGJhc2VDdG9yczogYW55W10pIHtcbiAgYmFzZUN0b3JzLmZvckVhY2goYmFzZUN0b3IgPT4ge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGJhc2VDdG9yLnByb3RvdHlwZSkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIGRlcml2ZWRDdG9yLnByb3RvdHlwZVtuYW1lXSA9IGJhc2VDdG9yLnByb3RvdHlwZVtuYW1lXTtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=