modul - Este posibil să exporți * ca foo în TypeScript
Pot:
import * as foo from './foo'
Dar nu par să pot să export la fel:
export * as foo from './foo'
Se pare că nici asta nu funcționează...:
import * as fooImport from './foo';
export const foo = fooImport;
Vreo idee?
--- ACTUALIZARE ---
Ce încerci să realizezi?
Practic, lucrez la implementarea unui backend ngrx/store pentru aplicația mea. Vreau să îmi organizez codul astfel:
app/core/
index.ts
viewer/
index.ts
viewer-actions.ts
viewer-reducer.ts
view-data/
index.ts
view-data-actions.ts
view-data-reducer.ts
Și vreau să folosesc fișierele mele index.ts pentru a lega toate exporturile din fiecare subset (paradigmă comună).
Totuși, vreau să păstrez lucrurile încadrate în spații de nume. Fiecare dintre fișierele mele xxx-reducer.ts și xxx-actions.ts au exporturi cu același nume (reducer, ActionTypes, Actions, ...) astfel că lanțuirea normală ar rezulta într-un conflict de nume. Ceea ce încerc să fac este să permit ca toate exporturile din xxx-actions și xxx-reducer să fie reexportate ca xxx. Aceasta mi-ar permite să:
import { viewer, viewerData } from './core';
...
private viewer: Observable<viewer.Viewer>;
private viewData: Observable<viewData.ViewData>;
ngOnInit() {
this.viewer = this.store.let(viewer.getViewer());
this.viewData = this.store.let(viewData.getViewData());
}
În loc de versiunea mai verbară:
import * as viewer from './core/viewer';
import * as viewerData from './core/viewer-data';
...
Asta e esența oricum...
Răspuns #1
TypeScript 3.8 sau ulterior
Vezi https://stackoverflow.com/a/59712387/1108891 pentru detalii.
Înainte de TypeScript 3.7 sau anterior
Este posibil să exporți * ca foo în TypeScript
Nu. Cu toate acestea, poți folosi un proces în doi pași:
src/core/index.ts
import * as Foo from "./foo";
import * as Bar from "./bar";
export {
Foo,
Bar,
}
src/index.ts
import { Foo, Bar } from "./core";
function FooBarBazBop() {
Foo.Baz;
Foo.Bop;
Bar.Baz;
Bar.Bop;
}
src/core/foo/index.ts și src/core/bar/index.ts
export * from "./baz";
export * from "./bop";
src/core/foo/baz.ts și src/core/bar/baz.ts
export class Baz {
}
src/core/foo/bop.ts și src/core/bar/bop.ts
export class Bop {
}
Vezi de asemenea: https://www.typescriptlang.org/docs/handbook/modules.html
Răspunsul #2
De când TypeScript 3.8 a fost lansat, poți să adaugi un alias pentru exporturile tale.
Exemplu :
export * as utilities from "./utilities.js";
Ref: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html
