2016-01-06 11 views
8

型を持つ必要があります。typescriptですが、$を認識していない文句ないように

/// <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オブジェクトを宣言しているため、この問題が発生します。

私はangle2/codeから何かをインポートすると、なぜ分度器を使用しないのですか?彼らがこれを行うなら、Angularの人たちがこれを修正するまで、まともな回避策がありますか?

注:分度器ファイルの定義をコメントアウトすることは適切な回避策ではありません。誰かがプロジェクトを取得してクリーンインストールを実行したり、角度を更新したりすると、としょうかん。回避策として

+0

あなたの質問は実際にはhttp://stackoverflow.com/questions/34546446/flattening-typeの複製ですscript-typings-or-interfaces/Hopefully Angularチームがすぐにこの問題を解決します。 –

+0

これらは関連しており、重複していません。それはもっと汎用的で、Angular 2全体をDefinitelyTypedライブラリとして求めています。私はこの特定のjqueryの競合のためにそれを解決したいと思います。なぜなら、コアモジュールの分度器を最初に呼び出すのは馬鹿だからです。 – Langley

+0

問題はhttps://github.com/angular/angular/issues/4725です –

答えて

0

、JQueryStaticをコメントアウトし、d.tsファイルに角度-protractor.d.tsの下

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

あなたはそれを後ろに持っているので、代わりにjQueryStaticの代わりにcssSelectorHelperを使うか、単にatmを使っている行をコメントする必要があります。それは機能しますが、レポをダウンロードするすべての人は同じことをしなければなりません。 ノードを持つ分度器モジュールを除外したり、別のソースからパッケージ全体をダウンロードしたりするような自動化されたソリューションを探しています。マスターリポジトリで問題が解決されたようですが、npmの新しいビルドはまだありません。 一時的な回避策は次のとおりです。 $ .isEmptyObject({}); – Langley

7

でcssSelectorHelperと交換

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

を置き換えます

declare module "jquery" { 
    export = jQuery; 
} 
declare var jQuery: JQueryStatic; 
関連する問題