【发布时间】:2013-06-24 11:01:46
【问题描述】:
Typescript 没有给出以下代码的编译器错误:
var b = a + 10; // Why no compilation error here
var a = 10;
alert(b.toString());
我希望第一行是一个错误,因为直到此时我还没有声明或初始化 var a。
如果我删除第二行,我会收到编译器错误。
我知道它在 JavaScript 中有效,但我希望 TypeScript 会给我编译错误或警告。
【问题讨论】:
-
因为变量声明被提升了?
-
我已经解释了为什么 TypeScript必须 允许它。这是因为你可能需要做
var x = undefined -
而在 C# 中,未赋值的变量没有意义。在 JavaScript 中确实如此。所以 TypeScript 必须允许这样做。
-
我已经向你展示了你真正需要这个“愚蠢的东西”的案例。例如模块模式。如果 TypeScript 夺走了 JavaScript 的力量,那就太糟糕了!
标签: javascript typescript