后续变量声明必须具有相同的类型。变量'$'必须是'JQueryStatic'类型,但这里有'cssSelectorHelper'类型

时间:2016-01-06 19:26:52

标签: typescript angular

我有一个非常简单的文件:

<iframe scrolling="no" height="380" src="https://www.xkcd.com/#comic"></iframe>

我安装了jQuery打字,所以打字稿不会抱怨不能识别$。但现在问题在于抱怨问题中的问题:

/// <reference path="../typings/browser/ambient/jquery/jquery" />
import {Component} from "angular2/core";

@Component({})
export class AppComponent{

    constructor(){
        $.isEmptyObject({});
    }

}

出现此问题的原因是角度量角器声明了$,但是Error:(1679, 13) TS2403: Subsequent variable declarations must have the same type. Variable '$' must be of type 'JQueryStatic', but here has type 'cssSelectorHelper'. 而不是cssSelectorHelper对象。

事情是......我根本不使用量角器!!!为什么在从angular2 / code导入东西时它会被添加?有没有一个像样的解决方法,直到Angular的人解决这个问题,如果有的话。

注意:在量角器文件中注释掉定义并不是一个不错的解决方法,我正在寻找永久性的东西,当别人抓住项目并运行干净安装或更新角度库时,这些东西不会消失

2 个答案:

答案 0 :(得分:8)

d.ts文件中替换

declare module "jquery" {
    export = $;
}
declare var jQuery: JQueryStatic;
declare var $: JQueryStatic;

declare module "jquery" {
    export = jQuery;
}
declare var jQuery: JQueryStatic;

答案 1 :(得分:0)

作为一种解决方法,注释掉JQueryStatic并用angular-protractor.d.ts底部的cssSelectorHelper替换

declare var browser: protractor.IBrowser;
declare var by: protractor.IProtractorLocatorStrategy;
declare var By: protractor.IProtractorLocatorStrategy;
declare var element: protractor.Element;
// declare var $: JQueryStatic;
declare var $: cssSelectorHelper;
declare var $$: cssArraySelectorHelper;