1// @noEmit: true 2 3export type ClassInterface<C> = { 4 [key in keyof C]: C[key]; 5} 6 7type InstanceInterface<I> = { 8 new(...args: any[]): I 9 prototype: I 10} 11 12type Constructor<I extends Object, C = any> = ClassInterface<C> & InstanceInterface<I> 13 14function cloneClass<T extends Constructor<{}>>(OriginalClass: T): T { 15 class AnotherOriginalClass extends OriginalClass { 16 constructor(...args: any[]) { 17 super(...args) 18 } 19 } 20 return AnotherOriginalClass 21}