<p dir="auto">Consider the following example</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="@Component({
    selector: &quot;my-comp&quot;
})
@View({
    template: &quot;&lt;div&gt;My Compponent&lt;/div&gt;&quot;
})
export class MyComponent {
    constructor(dep1:Dependency1,dep2:Dependency2){};
}"><pre class="notranslate"><code class="notranslate">@Component({
    selector: "my-comp"
})
@View({
    template: "&lt;div&gt;My Compponent&lt;/div&gt;"
})
export class MyComponent {
    constructor(dep1:Dependency1,dep2:Dependency2){};
}
</code></pre></div>
<p dir="auto">This generates (ts 1.6-beta) a compilation error TS2345: Argument of type 'typeof MyComponent' is not assignable to parameter of type 'Type'.</p>
<p dir="auto">This boils down to an equivalent simpler example that generates a compilation error:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="var dec : TypeDecorator;

@dec
export class MyClass {
    constructor(x1:number,x2:number){};
}"><pre class="notranslate"><code class="notranslate">var dec : TypeDecorator;

@dec
export class MyClass {
    constructor(x1:number,x2:number){};
}
</code></pre></div>
<p dir="auto">The problem lies in the fact that the definition of Type contains a "new" declaration with 1 argument causing MyClass not to be assignable to Type.</p>
<p dir="auto">dgeni generates type in angular2.d.ts with</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="  interface Type extends Function {
     new(args: any): any;
  }"><pre class="notranslate">  <span class="pl-s1">interface</span> <span class="pl-v">Type</span> <span class="pl-k">extends</span> <span class="pl-v">Function</span> <span class="pl-kos">{</span>
     <span class="pl-k">new</span><span class="pl-kos">(</span><span class="pl-s1">args</span>: <span class="pl-s1">any</span><span class="pl-kos">)</span>: <span class="pl-s1">any</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span></pre></div>
<p dir="auto">Typescript 1.6.0 throws an error during compilation:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="@Component({
    selector: 'audio-tile',
    properties: ['summaryInfo: summary-info'],
    events: ['tileEvent']
})
@View(&lt;any&gt;{ // TEMP
    template: &lt;string&gt;require('./audio-tile.html'),
    directives: [NgIf, NgClass],
    pipes: [SecsAsMmSsPipe]
})
export class AudioTile {
    constructor (resetPlaybackEventEmitter: ResetPlaybackEventEmitter,
                 resetExpansionEventEmitter: ResetExpansionEventEmitter) {
   }
}"><pre class="notranslate">@<span class="pl-v">Component</span><span class="pl-kos">(</span><span class="pl-kos">{</span>
    <span class="pl-c1">selector</span>: <span class="pl-s">'audio-tile'</span><span class="pl-kos">,</span>
    <span class="pl-c1">properties</span>: <span class="pl-kos">[</span><span class="pl-s">'summaryInfo: summary-info'</span><span class="pl-kos">]</span><span class="pl-kos">,</span>
    <span class="pl-c1">events</span>: <span class="pl-kos">[</span><span class="pl-s">'tileEvent'</span><span class="pl-kos">]</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
@<span class="pl-v">View</span><span class="pl-kos">(</span><span class="pl-c1">&lt;</span><span class="pl-ent">any</span><span class="pl-c1">&gt;</span><span class="pl-kos">{</span> <span class="pl-c">// TEMP</span>
    <span class="pl-s1">template</span>: <span class="pl-c1">&lt;</span><span class="pl-s1">string</span><span class="pl-c1">&gt;</span><span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'./audio-tile.html'</span><span class="pl-kos">)</span><span class="pl-kos">,</span>
    <span class="pl-s1">directives</span>: <span class="pl-kos">[</span><span class="pl-v">NgIf</span><span class="pl-kos">,</span> <span class="pl-v">NgClass</span><span class="pl-kos">]</span><span class="pl-kos">,</span>
    <span class="pl-s1">pipes</span>: <span class="pl-kos">[</span><span class="pl-v">SecsAsMmSsPipe</span><span class="pl-kos">]</span>
<span class="pl-kos">}</span>)
export class AudioTile <span class="pl-kos">{</span>
    <span class="pl-en">constructor</span> <span class="pl-kos">(</span><span class="pl-s1">resetPlaybackEventEmitter</span>: <span class="pl-v">ResetPlaybackEventEmitter</span><span class="pl-kos">,</span>
                 <span class="pl-s1">resetExpansionEventEmitter</span>: <span class="pl-v">ResetExpansionEventEmitter</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
   <span class="pl-kos">}</span>
<span class="pl-kos">}</span></pre></div>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ERROR in /Users/bestander/work/booktrack/mandrill/app/studio/audio/audio-tile/audio-tile.ts:9:1
Argument of type 'typeof AudioTile' is not assignable to parameter of type 'Type'."><pre class="notranslate"><code class="notranslate">ERROR in /Users/bestander/work/booktrack/mandrill/app/studio/audio/audio-tile/audio-tile.ts:9:1
Argument of type 'typeof AudioTile' is not assignable to parameter of type 'Type'.
</code></pre></div>
<p dir="auto">If I manually replace what dgeni generated into (as in <code class="notranslate">modules/angular2/src/core/facade/lang.ts</code>)</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="  interface Type extends Function {
     new(...args): any;
  }"><pre class="notranslate">  <span class="pl-s1">interface</span> <span class="pl-v">Type</span> <span class="pl-k">extends</span> <span class="pl-v">Function</span> <span class="pl-kos">{</span>
     <span class="pl-k">new</span><span class="pl-kos">(</span>...<span class="pl-s1">args</span><span class="pl-kos">)</span>: <span class="pl-s1">any</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span></pre></div>
<p dir="auto">Then it works fine.</p>