| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1x 2x 2x 2x 2x 2x 2x | export interface Constructor<T> {
new (...args: any[]): T;
}
export const MergeWithValues = <T extends Constructor<{}>>(data: {
[param: string]: any;
}) => {
return (Metatype: T): any => {
const Type = class extends Metatype {
constructor(...args) {
super(...args);
}
};
const token = Metatype.name + JSON.stringify(data);
Object.defineProperty(Type, 'name', { value: token });
Object.assign(Type.prototype, data);
return Type;
};
};
|