definiert wurde. Seit einiger Zeit versuche ich, die Klassen aus einer kleinen Bibliothek, die ich geschrieben habe, an einem einzigen Ort zu exportieren. Ich möchte, dass jede Klasse unabhängig davon ist, wie sie nach außen verfügbar gemacht wird, aber ich kann das bisher nicht schaffen.Eine TypeScript-Klasse aus einer anderen Datei exportieren, als sie in
Nehmen wir an, ich habe die Klasse Foo
// lib/foo.ts
export class Foo {}
und die Klasse Bar
// lib/bar.ts
export class Bar {}
Jetzt will ich diejenigen zur Verfügung stellen, wer nutzt das Paket über den MyModule
Namespace und das ist wo es schwierig wird. Ich weiß nicht, wie ich vorhandene Klassen aus einem Namespace exportieren kann, der an einer anderen Stelle als der Klasse selbst definiert ist.
Offensichtlich wird dies nicht funktionieren, weil es nicht gültig Typoskript ist:
// api.ts
import { Foo } from "./lib/foo";
import { Bar } from "./lib/bar";
export namespace MyModule {
export Foo;
export namespace MySubModule {
export Bar;
}
}
ich zwei mögliche Lösungen für diese gefunden haben, aber beide machen ihre Nachteile haben. Ich kann eine Variable definieren und die Klasse zuweisen:
// api.ts
import { Foo as MyFoo } from "./lib/foo";
import { Bar as MyBar } from "./lib/bar";
export namespace MyModule {
export const Foo = MyFoo;
export namespace MySubModule {
export const Bar = MyBar;
}
}
Dies wird in der Tat erlauben Sie mir, wie new MyModule.MySubModule.Bar
Instanzen der Klasse von einem externen Ort zu schaffen, sondern gibt mir nicht die Möglichkeit, sie als Typen zu verwenden, da
let myBarInstance: MyModule.MySubModule.Bar;
ein Typoskript Fehler werfen die besagt, dass
Module "path/to/module/api" .MySubModule hat keine exportierte Mitglied 'Bar'
Andersherum habe ich versucht, export type Bar = MyBar
statt const
zu verwenden und während dies funktioniert, wenn ich sage
let myBarInstance: MyModule.MySubModule.Bar
auf der anderen Seite kann ich natürlich nicht MyModule.MySubModule.Bar
instanziiert, da es nur eine Art Alias ist.
All dies gilt für die Foo
Klasse.
Hat jemand irgendwelche Erfahrung damit, habe ich vielleicht einige andere Exportfunktion übersehen, die TypeScript bietet?