typescript - página - que significa alt en una imagen
¿Es posible exportar*como foo en mecanografiado? (1)
¿Es posible exportar * como foo en mecanografiado?
Nop. Sin embargo, puede usar un proceso de dos pasos:
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 y src / core / bar / index.ts
export * from "./baz";
export * from "./bop";
src / core / foo / baz.ts y src / core / bar / baz.ts
export class Baz {
}
src / core / foo / bop.ts y src / core / bar / bop.ts
export class Bop {
}
Ver también: https://www.typescriptlang.org/docs/handbook/modules.html
Puedo:
import * as foo from ''./foo''
Pero parece que no puede exportar lo mismo:
export * as foo from ''./foo''
Esto tampoco parece funcionar ...
import * as fooImport from ''./foo'';
export const foo = fooImport;
¿Algunas ideas?
--- ACTUALIZACIÓN ---
¿Qué estás intentando lograr?
Básicamente, estoy trabajando en la implementación de un ngrx/store
end ngrx/store
para mi aplicación. Quiero organizar mi código así:
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
Y quiero usar mis archivos index.ts
para encadenar todas las exportaciones de cada subconjunto (paradigma común).
Sin embargo, quiero mantener las cosas en el espacio de nombres . Cada uno de mis archivos xxx-reducer.ts
y xxx-actions.ts
tiene exportaciones del mismo nombre ( reducer
, ActionTypes
, Actions
, ...) por lo que el encadenamiento normal daría lugar a una colisión de nombre. Lo que intento hacer es permitir que todas las exportaciones de xxx-actions
y xxx-reducer
se reexporten como xxx
. Esto me permitiría:
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());
}
En lugar de lo más detallado:
import * as viewer from ''./core/viewer'';
import * as viewerData from ''./core/viewer-data'';
...
Esa es la esencia de todos modos ...