2016-03-01 6 views
5

die Angular 2 Quickstart Lesen stieß ich auf diesem Abschnitt unter TypeScript Configuration:Warum erstellt das Typingtool absichtlich doppelte Typensätze?

Typing Datei Kollisionen

Typoskript Compiler duldet keine Neudefinition eines Typs. Für wird beispielsweise ein Fehler ausgegeben, wenn zwei Definitionen für den Promise-Typ angegeben wurden.

Doppelte Definitionen sind üblich. In der Tat, das Typisierungswerkzeug absichtlich erstellt doppelte Sätze von Typings (aus Gründen am besten woanders erklärt). Schauen Sie in der Projektstruktur für die Typisierung Ordner, in dem wir so etwas wie finden sollen:

typings 
    browser 
    ambient 
     es6-shim 
     es6-shim.d.ts 
    main 
    ambient 
     es6-shim 
     es6-shim.d.ts 
    browser.d.ts 
    main.d.ts 

Die es6-Shim Typisierungen werden dupliziert und die browser.d.ts und main.d.ts haben überlappender Inhalt.

Wenn ich die typings readme lesen, heißt es:

Wenn Sie den Aufbau einer Front-End-Paket empfohlen hat Sie Typisierungen/browser.d.ts verwenden. Die Browsertypings werden kompiliert, indem den Überschreibungen des Browserfeldes gefolgt wird.

Fragen:

Warum die typings tool absichtlich doppelte Sätze von Typisierungen erstellen?

Warum wird empfohlen, typings/browser.d.ts für Front-End-Pakete zu verwenden?

Meine Vermutung ist, weil die Unterstützung der browser Feld kann verschiedene Arten erstellen?

Wenn ja, was ist das browser Feld und auf welche Weise ändert es Typ?

Antwort

4

Ihre Vermutung war richtig. Typings erkennt, dass Pakete im Browser und an anderen Orten unterschiedlich funktionieren können. Diese Funktion ist für die meisten gebräuchlichen Pakete unnötig, da isomorphe JS trendig ist und viele Pakete in allen JS-Umgebungen identisch funktionieren.

Wenn jedoch mein Code absichtlich die Umgebung auf Funktionalität überprüft hat, oder wenn ich verhindern wollte, dass Benutzer Funktionen verwenden, die im Browser fehlerhaft sind, wäre es hilfreich.

Hier ist ein Beispiel. Ich habe ein Farbauswahl-Paket. Dieses Paket, wenn ich auf einem Desktop bin, erlaubt mir, eine Farbe von überall auf meinem Bildschirm auszuwählen. Offensichtlich beruht dies auf APIs auf Systemebene und kann nicht vom Browser verwendet werden. Auf der anderen Seite kann mein Browser die Farbe innerhalb des Browserfensters auswählen. Anstatt ein völlig neues Paket zu veröffentlichen, stelle ich einem Programmierer verschiedene Typen zur Verfügung, damit sie wissen, welche Funktionalität basierend auf ihrer Umgebung erlaubt ist.

Letztendlich sind die Kosten (abgesehen von Dateispeicherplatz auf Ihrem Computer) gering und die Funktionalität möglicherweise nicht möglich.

+0

Also, 'Haupt' Ordner wird die Definition für Knoten enthalten ist das, was du meinst? – lbrahim

+1

@Ibrahim Node primär, aber auch andere JS-basierte Umgebungen. :) Nur nicht der Browser. – Harangue

Verwandte Themen