web-dev-qa-db-ja.com

*をtypescriptのfooとしてエクスポートすることは可能ですか?

できます:

import * as foo from './foo'

しかし、同じものをエクスポートすることはできません:

export * as foo from './foo'

これも機能しないようです...:

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

何か案は?

---更新---

何を達成しようとしていますか?

基本的に、アプリのngrx/storeバックエンドの実装に取り​​組んでいます。次のようにコードを整理したい:

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

そして、index.tsファイルを使用して、各サブセット(共通のパラダイム)からのすべてのエクスポートをチェーン化します。

しかし、私は物事を維持したいnamespacedxxx-reducer.tsおよびxxx-actions.tsファイルにはそれぞれ同じ名前(reducerActionTypesActions、...)のエクスポートがあるため、通常のチェーン名前の衝突が発生します。私がやろうとしているのは、xxx-actionsxxx-reducerからのすべてのエクスポートをre-exported as xxxにすることです。これにより、次のことが可能になります。

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

より冗長な代わりに:

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

...

とにかく要点は...

21
Lucas

TypeScriptで*をfooとしてエクスポートすることは可能ですか?

いや。ただし、2段階のプロセスを使用できます。

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

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

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

export class Baz {

}

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

export class Bop {

}

参照: https://www.typescriptlang.org/docs/handbook/modules.html

28
Shaun Luttin