2014-11-11 7 views
9

Ich versuche, SystemJS mit Typescript arbeiten, aber sie scheinen miteinander zu kollidieren.Wie kann man Typoskript mit SystemJS und Angular verwenden?

Wie kann ich den automatischen Ladevorgang von System.js ausnutzen, ohne dass es mit Keywords auf Typescript in Konflikt gerät? mit Import/require macht Typoskript seine eigene Art und Weise für das Laden und Referenzierung von Dateien verwenden, obwohl es export als module.exports = ... übersetzt, ist es nicht das gleiche tut für import

Ist es überhaupt möglich, dies zu erreichen, oder ich muß Warten Sie, bis Typescript ES6-Schlüsselwörter unterstützt?

Antwort

6

Typoskript 1.5 fügt Unterstützung für die Erstellung dev zur Syntax des ES5 SystemJS-Moduls.

Autor eine Klasse wie:

export class Foo {} 

Dann kompiliert mit

tsc --module system foo.ts 

Das Ergebnis wird eine ES5-Modul mit dem SystemJS-Format vorliegen.

2

In Typoskript, würden Sie die folgende Importanweisung ...

import dep = require('dep'); 

console.log(dep); 

Wenn Sie kompilieren, schreiben übergeben Sie das Modul Flag:

tsc --module commonjs app.ts 

Das Typoskript sagt Commonjs Stil Module zum Ziel (Bei Bedarf kann auch AMD angesprochen werden - SystemJS unterstützt beide Arten von Syntax.

Die Ausgabe sieht wie folgt aus:

var dep = require('dep'); 

console.log(dep); 

Dieser Ausgang auf das folgende Beispiel aus dem SystemJS documentation analog ist.

// library resource 
var $ = require('jquery'); // -> /lib/jquery.js 

// format detected automatically 
console.log('loaded CommonJS'); 

Wenn Sie weitere Hilfe benötigen, können Sie eine Frage stellen und spezifische Beispiele, die das Problem zeigen, und wir werden in der Lage sein, mehr spezifische Beratung zu geben.

+0

Nun, SystemJS verwendet ES6-Syntax und Traceur, das ist das größte Rindfleisch, das ich bisher zwischen den beiden gefunden habe. 'Import _ from 'something'-Fehler in Typescript. Da Typescript zu ES5 kompiliert, kann ich nie ein funktionierendes "natives" ES6-Modul davon haben, und es schlägt fehl SystemJS – pocesar

+0

ES6-Unterstützung ist in der Roadmap für TypeScript (d. H. Ein Kompilieren in ES6-Modus). – Fenton

+0

"Kompilieren zu es6" -Flag ist wahrscheinlich, was ich suche, wann immer es implementiert ist. – iksose

0

können Sie sehen, here die Art, wie ich es mit Traceur anstelle von Typoskript gemacht habe, aber es sollte so ziemlich das gleiche mit Typoskript funktionieren, ich werde Ts hinzufügen, sobald ich wieder damit spielen kann.

HINWEIS: Ist mehr der Selbsterinnerung oder einen Spielplatz als eine richtige Saatgut

Als Steve der stärkste Punkt von SystemJs erwähnt ist, dass Sie fast jede Moduldefinition verwenden können, sollte der Lader das Modulformat erkennen, I persönlich bevorzugen die Module wie in

define([deps...],(deps..){ 
    // ... 
}) 

ich finde es sein wie Konstruktor Injektion Muster aus anderen Sprachen und Frameworks und übersetzt sie immer auf die gleiche Javascript zu erklären, beacuse es Javascript, verschönert mit Klasse und Pfeil-Funktionen ist (+ anotated mit Typen der Fall Typescript).

Auch amd gezeigt eindeutig asynchrone Absichten, das wäre Ehre, wenn Sie wählen, sagen wir ES6 Modul Syntax, denn der Code nach dem Import-Satz wird nur ausgeführt, wenn die Abhängigkeiten fertig geladen haben. ziemlich viel wie der Asynchron-Schlüsselwort fühlt es sich ein wenig zu kryptisch für die nicht

initiiert

BTW: und OutOFcontext: Beifall von SA/JHB die erstaunliche Arbeit von SystemJS

Herr Bedford