从不同文件

时间:2016-03-15 00:03:26

标签: typescript

是否可以从2个不同的打字稿文件导出到同一模块中?

我有:

芯/ a1.ts

module a1 {
    export module a2 {
        export module Topic1 {
            export class Type1 {
                constructor(public id: string) { }
            }
            export let Entity = new Type1("entity");
        }
    }
}

相对/ b1.ts

module a1 {
    module a2 {
        module  Topic1 {
            // how do I export something into a1.a2.Topic1 ?
            export let Relation = new a1.a2.Topic1.Type1("relation");
        }
    }
    function test1() {
        // this works:
        let v1 = a1.a2.Topic1.Entity;

        // this show an error: 
        // Property 'Relation' does not exist on type 'typeof Topic1'.
        let v2 = a1.a2.Topic1.Relation;
    }
}

我尝试了一些不同的方法,但无法让它发挥作用。

这里的想法是使用顶级模块来区分项目,以及实际项目模块和子模块的内部/子模块。在大型项目中使用打字稿时是否有最佳实践?感谢。

编辑1:更新评论以反映意图 - 导出到Topic1而不是其父级。

1 个答案:

答案 0 :(得分:1)

您希望的简化示例:

module a1 {
    export module a2 {
        export module Topic1 {
            // how do I export something into a1.a2 ?
        }
    }
}

简单回答:不会。除非您在a1.a2,否则无法导出到a1.a2。在你的情况下,你在a1.a2.Topic1

更新

  

如何将某些内容导出到a1.a2.Topic1

请确保在a1

中导出每个级别
module a1 {
    export module a2 {  // export here
        export module Topic1 {  // export here
            export const foo = 123;f // export here
        }
    }
}