title: Typescript decorator constructor overwriting including additional arguments
body: <p>According to the <a href="https://www.typescriptlang.org/docs/handbook/decorators.html" rel="noreferrer">typescript decorators documentation</a> the decorator example for replacing a constructor does not pass any arguments to the decorator function. How am I able to achieve this?</p>
  
  <p>This is what the doc says</p>
  
  <pre class="lang-js prettyprint-override"><code>function classDecorator&lt;T extends {new(...args:any[]):{}}&gt;(constructor:T) {
    return class extends constructor {
      newProperty = "new property";
      hello = "override";
    }
  }
  
  @classDecorator
  class Greeter {
    property = "property";
    hello: string;
    constructor(m: string) {
      this.hello = m;
    }
  }
  </code></pre>
  
  <p>But I want now to pass arguments like using the decorator as follows</p>
  
  <pre class="lang-js prettyprint-override"><code>@classDecorator({
    // some object properties fitting DecoratorData type
  })
  </code></pre>
  
  <p>I simply tried to add a second data parameter</p>
  
  <pre class="lang-js prettyprint-override"><code>function classDecorator&lt;T extends {new(...args:any[]): {}}&gt;(constructor: T, data: DecoratorData)
  </code></pre>
  
  <p>But this just tslint <em>2 arguments required, got 1</em>. Inserting a <code>null</code> placeholder doesn't work either. Also I tried using the <code>constructor</code> parameter as a second optional parameter. This leads to a signature missmatch error.</p>