2016-11-20 5 views
0

Mit TypeScript 2.0.10 möchte ich meine "Modell" -Module, die sich in separaten Dateien befinden, zu einer einzigen Definition zusammenfassen.Konsolidieren Sie einzelne Module in einzelne Module?

/lib/models 
     |-- model-a.ts 
     |-- model-b.ts 
     |-- model-c.ts 
     |-- models.ts 

Ich habe dies mit relativen Pfaden importieren, z.B .: import {ModelA} from "../../lib/models/model-a

ich so stattdessen importiert werden soll: `Import {ModelA} von "Modelle";

/lib/models/models.ts

declare module models { 
    export { ModelA } from "./model-a"; 
    export { ModelB } from "./model-b"; 
    export { ModelC } from "./model-c"; 
} 

Ich verwende SystemJS so das ich bin in der Lage zu tun:

Ich habe alle Modelle in models.ts conglomerated

paths: { 
    "*": "dist/*", 
    "models": "dist/models/models", 
    "services": "dist/services/*", 
    // ... 
} 

Derzeit wird die Kompilierung fehlschlagen, da TypeScript models/* nicht finden kann, aber das funktioniert Gut im Browser sinve Ich habe SystemJS Pfade konfiguriert. Gibt es eine Möglichkeit, diese Art der Zuordnung in tsconfig einzurichten?

Bearbeiten Reworized dies ein Haufen.

Antwort

0

Disclaumer: Dies verwendet keine Module! (Aber ich denke, dass Sie immer noch den gleichen Effekt erzielen).

Ich habe dies nicht mit System JS versucht, aber das sollte Typoskript glücklich machen.

models/index.ts

import { ModelA } from './model-a'; 
import { ModelB } from './model-c'; 

export { 
    ModelA, 
    ModelB 
}; 

irgendwo-else.ts

import { ModelA, ModelB } from './models'; 
+1

Dank. Ich müsste immer noch relative Pfade verwenden (z. B. '../../ lib/models'). Ich versuche wirklich, dies zu vereinfachen, da ich nicht jedes Mal den relativen Pfad "berechnen" muss, wenn ich ein Modell oder eine Dienstleistung importieren muss (buchstäblich jede Seite/Klasse/etc. In meinem Projekt. –

+0

@JoshM. oh snap! Ich glaube nicht, dass mir klar ist, dass dies Module sind. Wenn Sie das herausfinden, bitte aktualisieren Sie diese Frage mit Ihrer Lösung. Ich bin jetzt sehr interessiert! – drewwyatt