2016-01-06 89 views
8

我有一個非常簡單的文件:

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

@Component({}) 
export class AppComponent{ 

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

} 

我安裝了jQuery的分型,從而打字稿不會抱怨不承認$。但現在的事情是在抱怨問題的問題:

Error:(1679, 13) TS2403: Subsequent variable declarations must have the same type. Variable '$' must be of type 'JQueryStatic', but here has type 'cssSelectorHelper'. 

此問題是因爲角量角器聲明$很好,但作爲一個cssSelectorHelper而不是JQueryStatic對象。

事情是......我根本沒有使用量角器!!!,爲什麼當我從angular2/code中導入某些東西時會添加量角器?有沒有一個體面的解決方法,直到Angular的人解決這個問題,如果他們做過。

注意:在量角器文件中註釋掉定義並不是一個體面的解決方法,我正在尋找永久性的東西,當別人抓住項目並運行乾淨的安裝或者當我們更新角度時不會消失圖書館。

+0

你的問題實際上是http://stackoverflow.com/questions/34546446/flattening-type script-typings-or-interfaces /希望Angular團隊很快就會解決這個問題。 –

+0

它們是相關的,不是重複的。那個似乎更通用,並且要求將整個Angular 2作爲DefinitelyTyped庫。我只是想解決這個特定的jQuery衝突,因爲他們首先在覈心模塊中調用量角器是愚蠢的。 – Langley

+0

所以你的問題是這個https://github.com/angular/angular/issues/4725,對吧? –

回答

0

作爲變通,註釋掉JQueryStatic和角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; 
+0

你知道了,你必須替換cssSelectorHelper替代JQueryStatic,或者簡單地註釋一下我在做atm的那一行。它有效,但每個下載回購的人都必須這樣做。 我正在尋找一個自動化的解決方案,比如排除量角器模塊和節點,或者從另一個源下載整個軟件包,因爲它似乎已經在master repo中解決了問題,目前還沒有新的npm版本。 另一個臨時解決方法如下: $ .isEmptyObject({}); – Langley

7
d.ts文件

替換

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

declare module "jquery" { 
    export = jQuery; 
} 
declare var jQuery: JQueryStatic; 
相關問題