通常,Typescript 模块的声明如下
declare module MyModule {
....
}
但有时我也看到它
declare module "MyModule" {
....
}
我想知道将名称作为字符串给出的目的是什么?
我检查了Typescript 文档并发现
这是导入实体是可调用函数的模块的常见模式
我尝试编译两者MyModule
and "MyModule"
他们编译成同样的东西。这是否意味着带引号或不带引号是等效的,决定使用它们就像使用大写字母作为类名,或者以I
etc.?
正如在打字稿文档,两种风格之间存在差异。module x {
相当于namespace x {
, while module "x" {
与其他两者不同。这绝对令人困惑,这就是为什么文档在所有情况下都使用后一种语法的原因。
那么必须问的问题是,命名空间和所谓的外部模块(即用引号声明的模块)之间有什么区别?
我们从文档中得到了一些见解:
就像命名空间一样,模块可以包含代码和声明。主要区别在于模块声明它们的依赖关系。
模块还依赖于模块加载器(例如 CommonJs/Require.js)。
本质上,使用引号表明它确实是传统 Javascript 意义上的模块,需要使用显式导入。如果没有引号,您只需创建一个全局对象,无需任何显式的即可引用和使用该对象require
s.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)