2016-01-06 11 views
8

Ich habe eine sehr einfache Datei:

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

@Component({}) 
export class AppComponent{ 

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

} 

Ich installierte jQuery Typisierungen so Typoskript nicht um nicht zu erkennen $ beschweren würde. Aber jetzt ist die Sache beschwert sich über das Thema in der Frage:

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

Dieses Problem tritt auf, weil Winkel Winkelmesser $ auch bekannt, dass folgende sondern als cssSelectorHelper anstelle eines JQueryStatic Objekt.

Die Sache ist ... Ich benutze überhaupt keinen Winkelmesser !!!, warum wird es hinzugefügt, wenn ich etwas von angular2/code importiere? Gibt es eine vernünftige Workaround dafür, bis Angular Jungs das reparieren, wenn sie es jemals tun.

Hinweis: Auskommentieren der Definition in der Winkelmesser-Datei ist keine anständige Problemumgehung, ich bin auf der Suche nach etwas permanent, das nicht weggehen wird, wenn jemand anderes das Projekt ergreift und eine saubere Installation oder wenn wir die eckige aktualisieren Bibliothek.

+0

Ihre Frage ist eigentlich ein Duplikat von http://stackoverflow.com/questions/34546446/flattening-type script-typings-or-interfaces/Hoffentlich wird das Angular-Team dieses Problem bald beheben. –

+0

Sie sind verwandt, nicht dupliziert. Dieser scheint generischer zu sein und verlangt nach der ganzen Angular 2 als DefinitelyTyped lib. Ich möchte es nur für diesen spezifischen jQuery-Konflikt lösen, weil es blöd ist, dass sie im Core-Modul zuerst Winkelmesser aufrufen. – Langley

+0

Also Ihr Problem ist das https://github.com/angular/angular/issues/4725, richtig? –

Antwort

0

Als eine Arbeit um, JQueryStatic kommentieren und mit cssSelectorHelper am unteren Rand des Winkel protractor.d.ts ersetzen

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

Sie haben es rückwärts, müssen Sie stattdessen ersetzen cssSelectorHelper für JQueryStatic oder einfach kommentieren Sie die Zeile was ist, was ich tun atm. Es funktioniert, aber jede Person, die das Repo herunterlädt, muss dasselbe tun. Ich bin auf der Suche nach einer automatisierten Lösung, wie das Winkelmesser-Modul mit Knoten ausschließen, oder das gesamte Paket von einer anderen Quelle herunterladen, weil das Problem im Master-Repo gelöst wurde, gibt es nur keinen neuen Build für npm. Eine weitere temporäre Problemumgehung ist die folgende: $ .isEmptyObject ({}); – Langley

7

in der d.ts Datei ersetzen

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

mit

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