web-dev-qa-db-fra.com

Est-il possible d'exporter * en tant que foo en tapuscrit

Je peux:

import * as foo from './foo'

Mais ne semble pas exporter la même chose:

export * as foo from './foo'

Cela ne semble pas fonctionner non plus ...:

import * as fooImport from './foo';
export const foo = fooImport;

Des idées?

--- MISE À JOUR ---

Qu'essayez-vous de réaliser?

Fondamentalement, je travaille sur la mise en œuvre d'un ngrx/store backend pour mon application. Je veux organiser mon code comme ceci:

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

Et je veux utiliser mon index.ts fichiers pour enchaîner toutes les exportations de chaque sous-ensemble (paradigme commun).

Cependant, je veux garder les choses espace de noms. Chacun de mes xxx-reducer.ts et xxx-actions.ts les fichiers ont des exportations du même nom (reducer, ActionTypes, Actions, ...) donc le chaînage normal entraînerait une collision de noms. Ce que j'essaie de faire, c'est d'autoriser toutes les exportations de xxx-actions et xxx-reducer être réexporté en xxx. Cela me permettrait de:

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());
    }

Au lieu du plus verbeux:

import * as viewer from './core/viewer';
import * as viewerData from './core/viewer-data';

...

C'est l'essentiel de toute façon ...

21
Lucas

Est-il possible d'exporter * en tant que foo en TypeScript

Nan. Vous pouvez cependant utiliser un processus en deux étapes:

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 et src/core/bar/index.ts

export * from "./baz";
export * from "./bop";

src/core/foo/baz.ts et src/core/bar/baz.ts

export class Baz {

}

src/core/foo/bop.ts et src/core/bar/bop.ts

export class Bop {

}

Voir aussi: https://www.typescriptlang.org/docs/handbook/modules.html

28
Shaun Luttin