function classDecorator(constructor:T) { return class extends constructor { hello = "override"; newProperty = "new property"; } } @classDecorator class Greeter { property:number = 33; hello: string; other: string; constructor(m: string) { console.log(this); this.hello = m; this.other = m; console.log(this); } } console.log(new Greeter("world"));