IntelliJ 和 Angular 2 参数类型不可分配错误

IntelliJ and Angular 2 Argument Type Not Assignable Errors

IntelliJ 中的 Angular2(v15 的最新更新 - Ultimate)应该可以工作吗?所有文档似乎都说它是通过 AngularJS 插件实现的,但我遇到了非常奇怪的智能感知错误。例如;

bootstrap(App, [
    ROUTER_PROVIDERS,
    provide(LocationStrategy, {useClass: HashLocationStrategy})
]);

抛出  Argument type App is not assignable to parameter type Type

标准注释如;

@RouteConfig([
    {path: '/...', component: RootView, as: 'RootView', useAsDefault: true}
])

Argument type {path: string, component: RootView, as: string, useAsDefault: boolean}[] is not assignable to parameter type RouteDefinition[]

有没有人运行以前接触过这个?任何人都知道如何让 intelliJ 玩得很好?

请求的应用程序来源;

import {Component, ViewEncapsulation} from 'angular2/core';
import {RootView} from './root-view';
import {
    RouteConfig,
    ROUTER_DIRECTIVES
} from 'angular2/router';

@Component({
    selector: 'app',
    templateUrl: './components/app/app.html',
    encapsulation: ViewEncapsulation.None,
    directives: [ROUTER_DIRECTIVES]
})
@RouteConfig([
    {path: '/...', component: RootView, as: 'RootView', useAsDefault: true}
])
export class App {
}

事实证明,由于我无法解释的原因,需要一个构造函数,否则 IntelliJ 会变得非常混乱,并且这种混乱会一直沿着依赖链向下延伸。

在我的例子中,修复很简单,在 App:

中有一个默认的空构造函数
export class App {
    constructor() {}
}

但是使用 IntelliJ 的 Angular2 中的一般经验法则似乎是 DI 链中所有内容的构造函数——至少目前是这样。我认为这是一个错误,将在 IntelliJ 的 angular 插件中修复——我刚刚提交给他们。

根据 JetBrains issue tracker,此问题已得到修复,并且在即将发布的 2016.2 版本中将不再是问题

同时您可以使用EAP版本。