javascript - TypeScript 中的变量声明错误
问题描述
我知道,TypeScript 生成具有等效代码的 JavaScript 文件。
但是,这里有一个问题,TypeScript 不会生成等效的 JavaScript 代码。
演示.ts
function foo()
{
if(1)
{
let myName = "Raktim";
}
console.log(myName);
}
foo();
演示.js
function foo() {
if (1) {
var myName = "Raktim";
}
console.log(myName);
}
foo();
见上文,我在demo.ts文件中声明了一个语言环境变量myName 。但是,看看它声明myName变量为全局变量的 JavaScript 代码。
摘要:TypeScript 生成的 JavaScript 代码的变量总是在全局范围内(在我的例子中)。
因此,代码末尾的含义发生了变化。为什么?
解决方案
我认为您正在使用 webpack 之类的东西,它使用 babel 来转换代码。
https://babeljs.io/docs/en/babel-preset-env
你需要告诉 babel 你的目标浏览器。
例如,如果您针对读取 let 和 const 的最后一个 chrome 编译的代码不会改变
更新:使用 --target 选项在评论中解决,例如:tsc --target ES2016 file.ts
推荐阅读
- square - Square iOS Web API 返回 amount_invalid_format 错误,任何金额包含 0.99
- ruby - Ruby 中的 Æ、Ø 和 Å - 为什么 ("A".."Å").to_a 返回双字母?
- c# - 显示默认设备输出的音量峰值
- amazon-web-services - 使用 npm 安装 aws-sam-local 后找不到 sam 二进制文件
- javascript - 单击按钮获取新的 lorem picsum
- python - 正则表达式 python 组覆盖
- ruby-on-rails - Rails路由可选参数丢失数据?
- javascript - 将平滑滚动添加到引导程序 4.1(使用 scrollspy 时)?
- d3.js - 如何将拖动的节点粘贴到 D3 中
- c - 为什么 printf 不能在 c 中使用多线程?