title: Override base class method and extending literal type return
body: <p>Consider the follow snippet. A class with single variable and a pair of accessors.</p>
  <pre class="lang-js prettyprint-override"><code>export class Base {
    private _var: 'foo' | 'bar' = 'foo';
  
    get var(): 'foo' | 'bar' {
      return this._var;
    }
    set var(value: 'foo' | 'bar') {
      this._var = value;
    }
  }
  </code></pre>
  <p>If I want to extend <code>Base</code> class and override <code>var()</code> in the meantime return a more specific type by extending it from <code>'foo' | 'bar'</code>, is it possible to do that?</p>
  <p>If I do this I will get error TS2416</p>
  <pre class="lang-js prettyprint-override"><code>export class Derived extends Base {
    override get var(): 'foo' | 'bar' | 'baz' {
      // TODO
    }
    override set var(value: 'foo' | 'bar' | 'baz') {
      // TODO
    }
  }
  </code></pre>
  <pre><code>error TS2416: Property 'var' in type 'Derived' is not assignable to the same property in base type 'Base'.
    Type '&quot;foo&quot; | &quot;bar&quot; | &quot;baz&quot;' is not assignable to type '&quot;foo&quot; | &quot;bar&quot;'.
  </code></pre>