2016-01-06 15 views
8

yazın sahiptir gerekir: typescript $ tanımama şikayet olmaz bu yüzden

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

@Component({}) 
export class AppComponent{ 

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

} 

jQuery typings yüklü. Ama şimdi bir şey söz konusu sorunla ilgili şikayet:

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

Bu sorun açısal-iletki yanı $ ilan çünkü olur ama bunun yerine bir JQueryStatic nesnenin bir cssSelectorHelper olarak.

Şey ... Ben hiç iletici kullanmıyorum !!!, angular2/code'dan bir şey aldığımda neden ekleniyor? Bunu yapmak için Angular'li çocuklar bunu düzeltene kadar bunun için iyi bir çözüm var mı?

Not: iletki dosyasındaki tanımı yorumlamak iyi bir çözüm değil, başka birisi projeyi kaptığında ve temiz bir yükleme çalıştırdığında ya da açılışı güncelleştirdiğimizde kalıcı olmayacak bir şey arıyorum. kütüphane. Bir eser etrafında, JQueryStatic açıklama ve açısal-protractor.d.ts altındaki cssSelectorHelper ile değiştirin d.ts dosyada

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

Sorunuz aslında bir kopyasıdır http://stackoverflow.com/questions/34546446/flattening-type script-typings-or-interfaces/Umarım Açısal ekip yakında bu sorunu düzeltir. –

+0

İlişkilidir, çoğaltılmamıştır. Bu daha genel gibi görünüyor ve tüm Angular 2 için DefinitelyTyped lib olarak soruyor. Ben sadece bu özel jQuery çatışması için çözmek istiyorum, çünkü aptalca çekirdek modülde ilk etapta çağıran aptallar. – Langley

+0

Yani sorun şu https://github.com/angular/angular/issues/4725, değil mi? –

cevap

0

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

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

Geriye doğru aldınız, bunun yerine JssuSelectorHelper yerine JQueryStatic 'i değiştirmeniz veya basitçe atm yaptığım satırı yorumlamanız gerekiyor. Çalışıyor, ancak repo'yu indiren herkesin aynısını yapmak zorunda kalacak. Düğümlü iletici modülünü hariç tutma veya başka bir kaynaktan tüm paketi indirme gibi bir otomatik çözüm arıyorum. Sorun ana master'da çözülmüş görünüyor, npm için henüz yeni bir yapı yok. Bir daha geçici çözüm aşağıdaki gibidir: $ .isEmptyObject ({}); – Langley

İlgili konular