gpt4 book ai didi

javascript - 'let 和 'var' 在 Typescript 中是一样的吗?

转载 作者:可可西里 更新时间:2023-11-01 02:57:55 24 4
gpt4 key购买 nike

我正在查看 AngularJS 2 和 Typescript,我决定用它做点什么来学习 Typescript 的基础知识。通过许多研究,我发现了关于模块、Typescript 的好话题,其中之一是谈论“let”和“var”命令来声明变量;根据 this问题,下面的 Typescript 代码应该只显示一个警告并在控制台中抛出一个错误:

测试.ts:

for(let i = 0; i < 1; i++) {
alert(i);
}
alert(i);

编译的 test.js:

for(var i = 0; i < 1; i++) {
alert(i);
}
alert(i);
//# sourceMappingURL=test.js.map

但事实并非如此。编译器“忽略”“let”命令并将其变成“var”命令。为什么会这样? Typescript 是否仅适用于类?

我正在为“npm start”使用 AngularJS 配置,所以它会自动编译我的“test.ts”文件:

  "scripts": {
"start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ",
"lite": "lite-server",
"postinstall": "typings install",
"tsc": "tsc",
"tsc:w": "tsc -w",
"typings": "typings"
},

最佳答案

But it isn't. The compiler "ignores" the "let" command and turns it into the "var" command. Why does this happen? Does Typescript only works properly with classes?

编译器默认转译为 ES3。 let 关键字在 ES3 中不存在,因此发射器必须使用 ES3 中可用的语法发出代码...在这种情况下,let 关键字的最佳替代是var 关键字。

如果您希望它使用 let 关键字发出,那么您必须以 ES6 为目标—"target": "es6" in tsconfig.json 或命令行选项 --target es6。这样做将输出与您输入的代码相同的代码。

请注意,即使您的代码在运行时有效,它也会抛出一个错误,让您知道您在编译时犯了一个错误:

for(let i = 0; i < 1; i++) {
alert(i);
}
alert(i); // compile error: cannot find name 'i'

关于javascript - 'let 和 'var' 在 Typescript 中是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com