<p dir="auto">I defined a class:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="export class TCommand&lt;TSender, TParam, TThis&gt; 
{
}"><pre class="notranslate"><code class="notranslate">export class TCommand&lt;TSender, TParam, TThis&gt; 
{
}
</code></pre></div>
<p dir="auto">and created an alias for the closed type:</p>
<p dir="auto">export type Command = TCommand&lt;any, any, any&gt;;</p>
<p dir="auto">now when i try:</p>
<p dir="auto">export class NextCommand extends Command {<br>
}</p>
<p dir="auto">the compiler says: Error 1 Cannot find name 'Command'</p>
<p dir="auto">var cmd = new MOD.mvvm.Command();</p>
<p dir="auto">Produces the same error<br>
but i can write</p>
<p dir="auto">var cmd: Command = null;</p>
<p dir="auto">without errors,</p>
<p dir="auto">Expected: to allow using this type alias for inheritance purposes.<br>
The problem is that Typescript creates not a true alias<br>
it produces in the output:</p>
<pre class="notranslate">var NextCommand = (function (_super) {
    __extends(NextCommand, _super);
    function NextCommand() {
        _super.apply(this, arguments);
    }
    return NextCommand;
})(Command);  /// notice Command is not defined.
</pre>
<p dir="auto">but it should produce</p>
<pre class="notranslate">var NextCommand = (function (_super) {
    __extends(NextCommand, _super);
    function NextCommand() {
        _super.apply(this, arguments);
    }
    return NextCommand;
})(TCommand);  /// notice Command is replaced with original TCommand
</pre>
<p dir="auto">That means - we don't need new definitions in the output for alias, but alias should be replaced with the original definition in the output!</p>
<p dir="auto">Currently a type aliased class <a href="https://github.com/Microsoft/TypeScript/issues/2552" data-hovercard-type="issue" data-hovercard-url="/microsoft/TypeScript/issues/2552/hovercard">cannot be instantiated</a>. Also there is no way to alias a <a href="https://github.com/Microsoft/TypeScript/issues/1616" data-hovercard-type="issue" data-hovercard-url="/microsoft/TypeScript/issues/1616/hovercard">type with type parameters</a>. Please consider making type aliases as capable as the types that they represent, basically capturing the type expression under a different name.</p>