Typescript模块检查项是否已附加到命名空间

时间:2016-08-30 19:54:06

标签: typescript requirejs

我正在使用模块方法将现有代码转换为typescript,但是,有一些代码我不确定如何处理打字稿。说你有这个

featureNamespace = {
    feature1: ...,
    feature2: ...,
    feature3: ...
};

function getFeature(feature: string) {
    if (featureNamespace[feature]) {
        return featureNamespace[feature];
    }

    throw `Feature '${feature}' has not been loaded`;
}

以前,featureNamespace中的功能位于单独的文件中,并通过requirejs加载,并附加到全局命名空间对象。

使用模块化方法,我无法使用全局命名空间对象。我不能拥有,例如,

export module featureNamespace {
    export let feature1 = ...
}

在一个文件中

export module featureNamespace {
    export let feature2 = ...
}

在另一个文件中然后以某种方式导入模块featureNamespace并使用它来检查哪些功能已附加到featureNamespace?或者我可以吗?

1 个答案:

答案 0 :(得分:0)

你可以!我做的很多是在小文件中放入不同的功能,然后我有一个重新导出它们的聚合文件。我认为这也适用于您的用例?

文件1:

export let feature1 = ...

文件2:

export let feature2 = ...

文件3:

export namespace featureNamespace {
    export { feature1 } from "./file1";
    export { feature2 } from "./file2";
}

如果您有更多问题,请告诉我,我会延长答案。