<p dir="auto">This gives an compile error:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="
type t = () =&gt; void;

abstract class A {
   abstract f : t
}
"><pre class="notranslate"><code class="notranslate">
type t = () =&gt; void;

abstract class A {
   abstract f : t
}

</code></pre></div>
<p dir="auto">This compiles:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="
abstract class A {
  abstract f () : void; 
}
"><pre class="notranslate"><code class="notranslate">
abstract class A {
  abstract f () : void; 
}

</code></pre></div>
<p dir="auto">Shouldn't both be possible if we support type aliases?</p>
<p dir="auto">I used Typescript 1.7.5.</p>
<p dir="auto">This is a proposal to extend <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="89677065" data-permission-text="Title is private" data-url="https://github.com/microsoft/TypeScript/issues/3578" data-hovercard-type="issue" data-hovercard-url="/microsoft/TypeScript/issues/3578/hovercard" href="https://github.com/microsoft/TypeScript/issues/3578">#3578</a> to allow abstract properties in abstract classes. So the following should be legal:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="abstract class A {
  abstract p;
}
class B extends A {
  get p() {...}
  set p(v) {...}
}"><pre class="notranslate"><span class="pl-k">abstract</span> <span class="pl-k">class</span> <span class="pl-smi">A</span> <span class="pl-kos">{</span>
  <span class="pl-k">abstract</span> <span class="pl-c1">p</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>
<span class="pl-k">class</span> <span class="pl-smi">B</span> <span class="pl-k">extends</span> <span class="pl-smi">A</span> <span class="pl-kos">{</span>
  <span class="pl-k">get</span> <span class="pl-en">p</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>...<span class="pl-kos">}</span>
  <span class="pl-k">set</span> <span class="pl-en">p</span><span class="pl-kos">(</span><span class="pl-s1">v</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>...<span class="pl-kos">}</span>
<span class="pl-kos">}</span></pre></div>