命名空间内的匿名函数
问题描述:
我正在学习Typescript,但我有几个问题试图理解一些事情。命名空间内的匿名函数
我看到这个代码:
module Games {
((): void => {
alert("");
);
})();
}
但是当遵守的JavaScript我得到同样的结果,如果我将其更改为波纹管:
module Games {
alert("");
})();
}
是否有任何理由,为什么我会写就像第一个例子,或者它只是错误的代码。
答
所以用这个工作的范例开始......
module Games {
((): void => {
alert("");
})();
}
您目前结束了以下结果当您编译打字稿为JavaScript - 模块变得和立即调用的函数表达式...
var Games;
(function (Games) {
(function() {
alert("");
})();
})(Games || (Games = {}));
,当你的目标的ECMAScript更高版本上之后,你可能会发现其实模块有在JavaScript(因为这是该计划于EC功能只是早期访问MAScript)。
除非你有一个很好的理由要该模块内,我会建议如下调整......
module Games {
}
((): void => {
alert("");
})();
我觉得这会生存的未来变化更好。
答
在你的例子中,没有理由这样做。
更一般地说,设置一个函数会创建一个局部作用域,它允许您在其中使用变量,而其他模块无法访问它。这样可以降低模块不同部分的变量覆盖对方的风险,因为它们共享一个名称。
+0
谢谢你的解释昆汀。 – Marco
“编译”也不是JavaScript。 –
是的,它不是compliled,但是当你去Typescript的官方网页,他们说它是编译..只是想保持它一致 – Marco
也它有语法错误http://codepen.io/anon/pen/XbydME –