title: Extract method return type in method decorator
body: <p>I'm trying to add typing information to method decorator so I could properly type argument based on decorated method result.<br />
  Type of first parameter in my decorator need to be partial of return type of decorated method.
  Based on <code>TypedPropertyDescriptor&lt;T&gt;</code> it should be possible.
  However trying this doesn't give proper results - no suggestions (intelij IDE) for <code>props</code> arguments - so probably typing is wrong.</p>
  <pre><code>function Serialize&lt;R, T extends (...args : any[]) =&gt; Promise&lt;R&gt;&gt; (
      props : (keyof R)[], 
  ) : (target, method, descriptor : TypedPropertyDescriptor&lt;T&gt;) =&gt; void
  {
      ...
  }
  
  class Bar
  {
      public name : string;
  }
  
  class Foo 
  {
  
      @Serialize([
          'name',
      ])
      public async exec() : Promise&lt;Bar&gt;
      {
      }
  
  }
  </code></pre>
  <p>Any suggestions?</p>