如何在 Typescript 中高效使用嵌套模块

Ste*_*n G 6 import module export typescript

考虑以下源打字稿文件“src.ts”:

export module moduleA {
    export enum enumA {
        val1 = 0,
        val2 = 1
    };
};

export module moduleB {
    export module moduleC {
        export enum enumC {
            val3 = 0,
            val4 = 1
        };
    };
};
Run Code Online (Sandbox Code Playgroud)

并将以下文件视为同一文件夹中的消费者:

import { moduleA, moduleB } from "./src";

const A: moduleA.enumA = moduleA.enumA.val1;

const B: moduleB.moduleC.enumC = moduleB.moduleC.enumC.val3;
Run Code Online (Sandbox Code Playgroud)

这工作得很好,即使有点冗长。但现在为了尝试解决这种情况的“冗长”并使代码更易于阅读,我想做类似的事情:

import { moduleB.moduleC.enumC as enumC } from "./src";

const C: enumC = enumC.val3;
Run Code Online (Sandbox Code Playgroud)

但这是一个编译器错误——“模块没有导出的成员 moduleC”。

但实际上确实如此!

就我而言,有时我甚至想更深入地研究嵌套模块,如果我愿意在每次使用时都以解除引用的方式将它们写出来,那就没问题了。但我不知道如何取消引用导入语句中的嵌套。这可能吗?

bas*_*rat 8

这可能吗?

使用import不同的关键字来移动类型

import { moduleA, moduleB } from "./src";    
import enumC = moduleB.moduleC.enumC;
Run Code Online (Sandbox Code Playgroud)