Grundlegendes zu internen / externen Modulen und zum Import / Erfordernis von Typescript 0.8.2
Es gibt zahlreiche StackOverflow-Fragen, die sich mit diesem Thema befassen, aber entweder nicht ganz mit dem übereinstimmen, was ich versuche, oder für frühere Versionen von TypeScript.
Ich arbeite an einem ziemlich großen TypeScript-Projekt und habe ein bestimmtes Modul in mehrere Dateien aufgeteilt, nicht ganz eines pro Klasse.
In 0.8.0 hat dies gut funktioniert:
//* driver.ts *//
/// <reference path="express.d.ts"/>
/// <reference path="a.ts"/>
/// <reference path="b.ts"/>
.
//* a.ts *//
/// <reference path="driver.ts"/>
module m {
import express = module("express");
export class a {
A: m.b;
A2: express.ServerResponse;
}
}
.
//* b.ts *//
/// <reference path="driver.ts"/>
module m {
export class b {
B: number;
}
}
In 0.8.1 musste ich mich änderna.ts mit demExport Import Trick:
//* a.ts *//
/// <reference path="driver.ts"/>
module m {
export import express = module("express");
export class a {
A: m.b;
A2: express.ServerResponse;
}
}
In 0.8.2 können Importe jedoch nicht mehr innerhalb der Moduldeklaration liegen, soa.ts hat sich geändert in:
//* a.ts *//
/// <reference path="driver.ts"/>
import express = module("express");
module m {
export class a {
A: m.b;
A2: express.ServerResponse;
}
}
das gibt jetzt einen fehler daa.ts sieht die erweiterung des moduls nicht inb.ts.
Was ich verstehe:
a.ts ist aufgrund der import-Anweisung zu einem externen Modul geworden.Entfernen des Imports ina.ts erlaubt a und b und mein Modul zusammen zu verschmelzen.Wenn Sie den Import in eine require-Anweisung ändern, gehen die Typdefinitionen in verlorenexpress.d.tsWas ich nicht verstehe:
Kann ich das wirklich nicht umgehen, ohne alle meine Moduldateien zusammenzuführen?Ich entschuldige mich, wenn dies an anderer Stelle beantwortet wird - verlinken Sie mich einfach dort -, aber keines der anderen ähnlichen Probleme scheint dies definitiv zu beantworten.