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

时间:2016-01-04 02:47:26

标签: angularjs intellij-idea typescript typescript1.7 intellij-15

IntelliJ中的Angular2(v15的最新更新 - 终极版)应该有效吗?所有的文档似乎都说它是通过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 {
}

2 个答案:

答案 0 :(得分:2)

事实证明,由于我无法解释的原因,需要构造函数或IntelliJ真的很混乱,并且混淆一直沿着依赖链。

在我的实例中,修复很简单,是App中的默认空构造函数:

export class App {
    constructor() {}
}

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

答案 1 :(得分:1)

根据JetBrains issue tracker,这已得到修复,即将发布的2016版本将不再存在问题。

同时您可以使用EAP版本。