2016-08-04 15 views
0

Ich erstelle eine Web + Mobile App, die Reactive-Native und TypeScript verwendet. Also habe ich zwei verschiedene Ausgänge für zwei verschiedene TS-Konfigurationen.TypeScript - Wie kann man eine der Typisierungen ausschließen?

Für das Web ist mein Ziel es5 und Modul commonjs. Also muss ich die es6-shim tippen, um tsc glücklich zu machen, wenn man transpiliert.

Für mobile (verschiedene tsconfig.json), ist mein Ziel es6 und Modul es6. Das Problem ist, dass dies mit den es6-shim Eingabe- und tsc Ausgaben viele "Duplicate Identifier" -Fehler kollidiert. Wenn ich die Unterlegscheibe entferne, ist tsc glücklich (aber dann funktioniert Web-Übertragung nicht mehr).

Ich habe versucht, wie so die Eingabe in den TSconfig für mobile ohne:

... 
"exclude": [ 
    "typings/globals/es6-shim", 
... 

... aber kein Glück, findet Typoskript Compiler die Typisierung sowieso (wahrscheinlich wegen einer Referenz von typings/index.d.ts zum es6 -shim typing) und gibt immer noch viele "Duplicate identifier" -Fehler für den mobilen Build aus.

Mache ich den falschen Weg? Denk ich falsch darüber nach, und es gibt einen anderen Weg, dies zu lösen?

Antwort

1

typings/index.d.ts Ausschließen für die ES6 bauen als Gut.

Wenn Sie etwas anderes in dieser Datei haben, das in den ES6-Build aufgenommen werden muss, dann verschieben Sie die es6-shim Referenz in eine separate .d.ts Datei für den ES6 Build und schließen Sie diese stattdessen aus.

+0

Vielen Dank! Das Ausschließen der Datei 'typings/index.d.ts' scheint die richtige Lösung zu sein. TSC findet automatisch alle Typisierungsdefinitionsdateien auch ohne die Indexdatei. –

1

Wenn Sie zwei verschiedene tsconfig.json Dateien haben, könnten Sie zwei typing Ordner haben, beide mit den entsprechenden Dateien für Mobile/Web. Dies würde etwas von der Struktur Ihres Projekts abhängen, wenn es ein getrenntes Verzeichnis gäbe, in dem es sinnvoll wäre, diese zu behalten.

Allerdings würde ich wahrscheinlich geneigt sein, Ihre index.d.ts Datei auch ignorieren und explizit Ihre Deklarationsdateien für jeden Build-Typ einschließen. z.B.

Mobil tsconfig.json:

{ 
    "compilerOptions": { 
     "module": "commonjs", 
     "noImplicitAny": true, 
     "removeComments": true, 
    }, 
    "files": [ 
     "core.ts", 
     "typings/globals/something_else.d.ts" 
     // Your other files to be compiled or declarations (everything bar your es6-shim) 
    ] 
} 

und dann könnte man das gleiche für das Web tun, einschließlich Ihrer es6-Shim, oder einfach nur alles addieren dh die index.d.ts

+0

Unterstützt das [typings] (https://github.com/typings/typings/blob/master/docs/commands.md) Tool mehrere Konfigurationen mit separaten Verzeichnissen? Ich bin mir nicht sicher. Der Vorschlag würde mit TypeScript funktionieren, aber das Hinzufügen und Verwalten neuer Typings mit dem Typisierungswerkzeug wäre mühsam, wenn dies nicht unterstützt wird. –

+0

@ RonaldZarīts Sie haben in der Frage erwähnt, dass Sie zwei tsconfig-Dateien haben? –

+0

Ich bin nicht das Plakat. Ich denke, es ist impliziert, dass das Poster zwei tsconfig.json Dateien hat, aber ich beziehe mich auf 'typings.json' Datei für das' typings' Tool - es ist ein separates Tool mit einer separaten Konfigurationsdatei. –