Edi*_*nny 9 javascript var let typescript
我正在看一下AngularJS 2和Typescript,我决定用这个来学习一些打字稿的基础知识.通过许多研究,我找到了关于模块,Typescript的好主题,其中一个讨论了'let'和'var'命令来声明变量; 根据这个问题,下面的Typescript代码应该只显示一个警报并在控制台中抛出错误:
test.ts:
for(let i = 0; i < 1; i++) {
alert(i);
}
alert(i);
Run Code Online (Sandbox Code Playgroud)
编译test.js:
for(var i = 0; i < 1; i++) {
alert(i);
}
alert(i);
//# sourceMappingURL=test.js.map
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.编译器"忽略""let"命令并将其转换为"var"命令.为什么会这样?Typescript只适用于类吗?
我正在使用AngularJS配置'npm start',因此它会自动编译我的'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"
},
Run Code Online (Sandbox Code Playgroud)
Dav*_*ret 13
但事实并非如此.编译器"忽略""let"命令并将其转换为"var"命令.为什么会这样?Typescript只适用于类吗?
默认情况下,编译器转换为ES3.该let关键字在ES3中不存在,因此发射器必须使用ES3中提供的语法发出代码...在这种情况下,let关键字的最佳替代是var关键字.
如果希望使用let关键字发出它,则必须"target": "es6"在tsconfig.json或命令行选项中定位ES6- --target es6.执行此操作将使用您输入的相同代码输出.
请注意,即使您的代码在运行时工作,它也会抛出一个错误,让您知道在编译时出错了:
for(let i = 0; i < 1; i++) {
alert(i);
}
alert(i); // compile error: cannot find name 'i'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8455 次 |
| 最近记录: |