【发布时间】:2015-07-07 05:44:20
【问题描述】:
我刚开始使用 TypeScript,有时会出现编译器错误“使用未声明的变量”。例如以下在纯 JavaScript 中工作:
var foo = {};
foo.bar = 42;
如果我尝试在 TypeScript 中做同样的事情,它将无法正常工作并给我上面提到的错误。我必须这样写:
var foo :any = {};
foo.bar = 42;
在纯 JavaScript 中,带有 any 的类型定义既不是必需的,也不是有效的,但在 TypeScript 中,这似乎是强制性的。我了解错误及其原因,但我总是在视频中听到并在文档中阅读:
“TypeScript 是 JavaScript [...] 的类型化超集”
Introduction Video @minute 3:20:
“所有 JavaScript 代码都是 TypeScript 代码,复制粘贴即可”
这是在 TypeScript 开发过程中发生了变化,还是我必须通过特定的编译器设置才能使其工作?
【问题讨论】:
-
它是一个超集。但这并不意味着它可以 1) 编译和 2) 用作常规 JavaScript。 Objective-C 是 C/++ 的超集,但它有自己的编译器/IDE/环境。您必须遵循 TypeScript 指令,而不是将其与 JavaScript 进行逐字比较。
-
嗯,也许这只是用词不当。这不是真正的 error 是吗?更多警告,因为它确实生成有效的Javascript。当然,TypeScript 经常吹捧为编译器提供 Javascript 应该“正常工作”
-
@RGraham 好了,所以语言在语法上兼容就好了。
-
error TS2094: The property 'bar' does not exist on value of type '{}'.实际上是tsc的响应。但这不是一个错误,如果是,它肯定不是一个关键的错误:) 不过是个好问题。 TypeScript 乍一看总是很简单,但它的怪癖和 JS 一样多 -
当我读到“错误 TS2094”时,在我的世界里这是一个 错误 ...这意味着 TypeScript 无效,即使编译器可能会发出工作JavaScript ...
标签: javascript compiler-errors typescript1.4