有两种简单的TypeScript代码。
a.ts
console.log(name);
b.ts
console.log(a);
a.ts可以编译,但编译器抱怨b.ts
$ ./node_modules/.bin/tsc a.ts
$ ./node_modules/.bin/tsc b.ts
b.ts(1,13): error TS2304: Cannot find name 'a'.
为什么a.ts可以成功? 我真的很困惑。
我正在使用v2.0.10
$ ./node_modules/.bin/tsc --version
Version 2.0.10
最佳,
答案 0 :(得分:1)
如果您在Chrome开发者工具中执行以下代码
for(var b in window) {
if(window.hasOwnProperty(b)) console.log(b);
}
您会看到一个属性" name" (对于Web浏览器,全局范围是窗口)。
因此TypeScript编译器允许您引用' name' (否则将是未声明的变量)因为它知道它存在于窗口(全局范围)上。虽然没有财产' a'在全局范围内,所以编译器正在完成它的工作并告诉你它。