2016-10-25 55 views
0

重叠的问题,我不知道这是否支持或不支持,但我有凡在我d.ts文件,我想有以下声明的情景:模块名称打字稿

declare module final { 
    export class Test { 

    } 
} 

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

     } 
    } 
} 

而且这个问题我在extends final.Test零件的类型'typeof final'中不存在TypeScript“Property'Test'”。

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

+0

在哪里这些模块存在吗?他们在窗户下吗? –

+0

我正在使用NativeScript,它具有在独立的.d.ts文件中为原生Android/iOS库声明类型定义文件的“模式”,以便在开发过程中除去这些警告,它们由{N}之后的运行时间。上面的代码片段是这些文件的简化版本,但基本上就像您在单个文件中看到的一样。 .ts文件中的相同内容也会引发此错误。 –

回答

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的完成。

+0

感谢您的回复,我很清楚我可以使用我的问题文本中所述的不同名称,但希望看看我是否没有遗漏某些东西。谢谢。 –

+0

然后你需要添加一个通用的父模块 –

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 { 
     } 
    } 
}