2017-09-29 1 views
1

Eine ziemlich einfache Frage, aber ich habe noch nirgendwo eine Antwort gefunden: Gibt es einen Schalter, mit dem TypeScript Pfeilfunktionen in einfache JavaScript-Funktionen übersetzen kann?Kompilieren von Pfeilfunktionen in reguläre Funktionen mit TypeScript

Ich benutze sie sehr in meinem Code, und ich will nicht alles neu schreiben. Aber ich habe kürzlich erkannt, dass IE sie nicht unterstützt.

Ich habe bereits versucht, die Skriptversion auf ES5 umzustellen, aber dann wird mein Code nicht mehr kompilieren, weil ich auch "filter" verwende, was anscheinend kein Teil davon ist. Ich weiß jedoch nicht, ob das überhaupt funktionieren würde.

Antwort

2

Wenn Sie wollen einfach nur zu den regulären Funktionen Pfeil Funktionen umwandeln und den Rest des Codes Compilierung zu halten, können Sie die target config es5 gesetzt und lib Eigenschaft es6:

"compilerOptions": { 
    "target": "es5", 
    "lib": ["es6"], 
    // .... 
} 

Dies ermöglicht Ihre Code, der beim Targeting von ES5 ES6-Features zum Kompilieren verwendet. Aber Sie müssen sicherstellen, dass diese Funktionen (wie filter) zur Laufzeit verfügbar sind. Wenn sie nicht verfügbar sind, werden Laufzeitausnahmen ausgelöst.

+0

Vielen Dank für Ihren Vorschlag. Ich habe meine Einstellung entsprechend geändert. Allerdings wirft es jetzt 221 Fehler, einschließlich so seltsame Dinge wie "Build: Name" -Dokument "konnte nicht gefunden werden." (Übersetzung aus dem Deutschen). Es kann auch Sachen wie XMLHttpRequest, Navigator und sogar HTMLElement nicht finden. Was läuft da falsch? –

+0

Fügen Sie "lib": ["es6", "dom"] 'hinzu, wenn Sie für den Browser bauen. – Saravana

+0

Danke. Diese Antwort habe ich inzwischen schon selbst gefunden. Alles funktioniert jetzt gut, sogar in IE. Ich musste nur noch ein Polyfill hinzufügen. Du hast wirklich meinen Tag gerettet! –

1

Pfeilfunktionen sind ein Teil von ES6, aber Sie sollten in der Lage sein, Ihren Code mit Babel an ES5 zu übertragen. Es gibt eine babel-preset-typescript, die Sie dafür verwenden können.

+0

Vielen Dank für Ihre Idee. Ich habe es bereits mit @ Saravanas Lösung gelöst. –

Verwandte Themen