Ich kann den AngularJS 2.0 5-Minuten-Quickstart in meinem IntelliJ IDEA 14.1.4
nach dieser Stackoverflow-Antwort erhalten in Bezug auf AngularJS 2.0 TypeScript Intellij Idee (oder Webstorm) - ES6-Import-Syntax .
Dies scheint jedoch auf die Kompilierung von TypeScript
bis EcmaScript 5
zu zielen.
Ich wollte sehen, ob ich AngularJS 2.0 Typescript
zu EcmaScript 6
kompilieren könnte.
Problem 1: Wenn ich den TypeScript
-Compiler zum Ziel ES6
...
Ich bekomme einen TypeScript
Compiler Fehler:
Ich kann es umgehen, indem ich die Compileroption --module "amd"
TypeScript
lösche.
Das wirft die Frage auf: Ohne Angabe von amd, welches Modulformat verwendet ES6
?
Problem 2:
Nach dem Ändern der TypeScript
-Compileroptionen sehen sie wie folgt aus:
Ich bekomme Fehler bezüglich:
%Vor% Hat jemand das schon mal gesehen? Ich vermute, dass es etwas damit zu tun hat, dass AngularJS 2.0 Quickstart
ES-6 Promise spezifiziert und es global installiert wird, aber nicht in der Lage war, herauszufinden, wie es gelöst werden kann.
Vielen Dank im Voraus.
Okay, ich habe die Probleme erkannt, die mich daran hinderten, den AngularJS 2.0
Quickstart in EcmaScript 6
zu kompilieren:
Lösung:
Wie bereits erwähnt, unterstützt ES6
amd
nicht. Ich habe versucht, --module="system"
Compiler-Flag zu spezifizieren, aber das hat auch nicht funktioniert, immer noch die Fehlermeldung
Fehler: TS1204: Module können nicht in 'commonjs', 'amd', 'system' oder 'umd' zusammengestellt werden, wenn 'ES6' oder höher ausgewählt wird.
Die Lösung dafür ist, NICHT irgendeine Art von Modul anzugeben.
Meine neuen TypeScript
Compileroptionen:
tsd install angular2 es6-promise rx rx-lite
zieht ES6-Versprechen herunter, wie man es erwarten würde. Das Problem ist, dass TypeScript 1.5.3
eine TypeScript Definition file
in der bin
namens lib.es6.d.ts
enthält. Dies enthält eine Definition von "Versprechen", die mit derjenigen kollidiert, die über den Befehl " tsd
" abgerufen wurde.
Ich habe das Verzeichnis es6-promise
aus meinem Angular2-Projekt typings
-Ordner entfernt (das Verzeichnis, das durch Ausführen von tsd
erstellt wurde).
(das fühlte sich an wie ein Hack): Ich ging in die Datei angular2.d.ts
und entfernte die folgende Zeile:
///reference path=<"../es6-promise/es6-promise.d.ts"/>
Der Grund, warum ich das entfernen musste, ist AngularJS 2.0 TypeScript Type Definition
sucht auf Peer-Ebene nach ES6-Versprechen. Da die TypeScript compiler
(zumindest die Version, die ich verwende, TypeScript 1.5.3
enthält die ES6 Promise bereits) und sie in Konflikt geraten.
ohne Angabe von amd, welches Modulformat verwendet ES6?
Bei Ziel es6 soll nur system
erlaubt sein. Die Tatsache, dass amd
funktioniert hat, ist ein Fehler.
Doppelte Kennung "Versprechen"
Mit Ziel es6 lib.d.ts
ändert sich in lib.es6.d.ts
( diese Datei ), die eine Definition für Promise
enthält.
Empfohlene Lösung:
--nolib
und fügen Sie lib.d.ts
in Ihr Projekt ein
Mehr über lib.d.ts Ссылка
Das Tutorial für Angular2 wurde seit der Antwort von Philip geändert, es verwendet nicht mehr es6-promise, aber ich erhalte immer noch diesen Fehler, wenn ich versuche, es6 zu transpilieren.
Der Trick besteht darin, die Browser-Typisierung bei der Verwendung von es6 auszuschließen. Sie können% c_de% zur Ausschlussoption in tsconfig.js hinzufügen.
Wenn Sie nach es6 transponieren, verwenden Sie:
%Vor%Wenn Sie nach es5 transponieren, verwenden Sie:
%Vor%Ich hatte lange damit zu kämpfen. Ich habe alle Informationen ohne Glück versucht. Ich habe auf Typisierungen in meiner Boot-Datei verwiesen.
/// <reference path="../../typings/index.d.ts" />
Wo Typisierung die folgende Struktur hat
typings
-- globals
---- es6-collections
---- es6-promise
---- node
Ich hatte auch das @type Knotenmodul komplett entfernt. Außerdem versuchen Sie verschiedene 'Excludes' und 'Typen' in der tsconfig.json Datei. Ohne Erfolg.
Nach viel Herumspielen fand ich heraus, dass wenn ich nur 'node' index.d.ts und nicht den anderen Inhalt von 'typings' enthielt, es gut funktionierte.
Daher
/// <reference path="../../typings/globals/node/index.d.ts" />
in meiner Angular 2 Boot-Datei hat es für mich getan.
Tags und Links angular typescript ecmascript-6