Open EdwardZZZ opened 5 years ago
function Binder(): Function { return function <T extends { new(...args: any[]): {} }>(constructor: T) { return class extends constructor { constructor(...props: any[]) { super(); console.log('params:', props, constructor); const result = constructor.toString().replace(/\s/g, '').match(/constructor\(([a-zA-Z_$][a-zA-Z_$,0-9]*)?\)/)[1]; result && console.log(result.split(',')); } } } } @Binder() class User { constructor( readonly username: string, readonly password: string, readonly age: number ) { } } const user = new User('Lily', '123', 18);