TypeScript中的模块名称重叠问题

时间:2016-10-25 08:41:16

标签: typescript

我不确定这是否受支持但我有一个场景,在我的d.ts文件中我想要声明如下:

declare module final {
    export class Test {

    }
}

declare module root {
    module final {
        export class MainClass extends final.Test {

        }
    }
}

我遇到的问题是TypeScript" Property' Test'在类型' typeof final'"中不存在对于extends final.Test部分。

所以我们有一个模块名称重叠的问题,是否可以解析,而不需要使名称唯一?

2 个答案:

答案 0 :(得分:1)

没有办法指明你的意思是另一个final模块 您可以做的是用不同的名称命名模块:

declare module final1 {
    export class Test {}
}

declare module root {
    module final2 {
        export class MainClass extends final1.Test {}
    }
}

或者您可以将其放在共享父母下面:

declare module myModule {
    export module final {
        export class Test {}
    }
}

declare module myModule {
    declare module root {
        module final {
            export class MainClass extends myModule.final.Test {}
        }
    }
}

在浏览器中已有共享父级,这是一个窗口,您可以这样做:

export class MainClass extends window.final.Test {}

但我不确定NativeScript是如何完成的。

答案 1 :(得分:0)

在声明type之前,您可以使用final.Test关键字为module.root声明别名:

declare module final {
    export class Test {
    }
}

// define 'finalTest' as an alias
type finalTest = final.test;

declare module root {
    module final {
        export class MainClass extends finalTest {
        }
    }
}