title: Can I add a property to a class at compile time via a decorator?
body: <p>I have the following code</p>
  
  <pre><code>export class TestClass {
      query&lt;TId, TRequest extends TId, TResponse extends TId&gt;(request: TRequest) : TResponse {
          return null;
      }
  
      test() {
          let request = new SomeQuery1();
          let response = this.query&lt;{ "a b c" }, SomeQuery1, SomeResponse1&gt;(request);
      }
  }
  
  class SomeQuery1 {
      public "a b c": string;
  }
  class SomeResponse1 {
      public "a b c": string;
  }
  </code></pre>
  
  <p>The "a b c" bit is just a marker I am playing with that lets the generic constraint know that these two classes are in some way related. I intend to use a unique name. But anyway, what I would like to do is this</p>
  
  <pre><code>@myDecorator("a b c")
  class SomeQuery1 {
  }
  @myDecorator("a b c")
  class SomeResponse1 {
  }
  
  //Is effectively the same as this
  class SomeQuery1 {
      public "a b c": string;
  }
  class SomeResponse1 {
      public "a b c": string;
  }
  </code></pre>
  
  <p>So that the original <code>TestClass</code> will still employ the same strongly typed checking at compile time. Is this possible with a decorator, or any other TypeScript mechanism?</p>