Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 2x 1x 1x 1x 6x 5x 5x 4x 1x 1x | /** * Copies static properties from the source to the target. * @param target The target to copy the properties to. * @param source The source to copy the properties from. * @returns The target with the copied properties as type SourceType. */ export function copyStaticProperties<SourceType>( target: unknown, source: SourceType, ): SourceType { let currentSource = source as unknown; while (currentSource && currentSource !== Function.prototype) { Object.getOwnPropertyNames(currentSource) .concat(Object.getOwnPropertySymbols(currentSource).toString()) .forEach((prop) => { if (prop !== 'prototype') { const descriptor = Object.getOwnPropertyDescriptor( currentSource, prop, ); if (descriptor?.configurable) { Object.defineProperty(target, prop, descriptor); } } }); currentSource = Object.getPrototypeOf(currentSource); } return target as SourceType; } |