@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.28 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(function (baseCtor) {
Object.getOwnPropertyNames(baseCtor.prototype).forEach(function (name) {
derivedCtor.prototype[name] = baseCtor.prototype[name];
});
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktbWl4aW5zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRlcm1pbnVzL25neC10b29scy91dGlsaXRpZXMvIiwic291cmNlcyI6WyJhcHBseS1taXhpbnMvYXBwbHktbWl4aW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsOERBQThEO0FBQzlELE1BQU0sVUFBVSxXQUFXLENBQUMsV0FBZ0IsRUFBRSxTQUFnQjtJQUM1RCxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQUEsUUFBUTtRQUN4QixNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7WUFDekQsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGhlbHBlciBmdW5jdGlvbiB0byBhcHBseSBUeXBlU2NyaXB0IG1peGluc1xuICpcbiAqIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21peGlucy5odG1sXG4gKlxuICogQHBhcmFtIGRlcml2ZWRDdG9yIC0gVGhlIG1peGluIHRhcmdldCBjbGFzc1xuICogQHBhcmFtIGJhc2VDdG9ycyAtIEFuIGFycmF5IG9mIGNsYXNzZXMgdG8gY29tYmluZSBpbnRvIHRoZSB0YXJnZXQgY2xhc3NcbiAqIEByZXR1cm5zIFRoZSBtaXhlZCBjbGFzc1xuICpcbiAqIEBleGFtcGxlXG4gKiBhcHBseU1peGlucyhTbWFydE9iamVjdCwgW0Rpc3Bvc2FibGUsIEFjdGl2YXRhYmxlXSk7XG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gYXBwbHlNaXhpbnMoZGVyaXZlZEN0b3I6IGFueSwgYmFzZUN0b3JzOiBhbnlbXSkge1xuICBiYXNlQ3RvcnMuZm9yRWFjaChiYXNlQ3RvciA9PiB7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYmFzZUN0b3IucHJvdG90eXBlKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgZGVyaXZlZEN0b3IucHJvdG90eXBlW25hbWVdID0gYmFzZUN0b3IucHJvdG90eXBlW25hbWVdO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==