首页 > 解决方案 > 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 代码的变量总是在全局范围内(在我的例子中)。

因此,代码末尾的含义发生了变化。为什么?

标签: javascripttypescript

解决方案


我认为您正在使用 webpack 之类的东西,它使用 babel 来转换代码。

https://babeljs.io/docs/en/babel-preset-env

你需要告诉 babel 你的目标浏览器。

例如,如果您针对读取 let 和 const 的最后一个 chrome 编译的代码不会改变

更新:使用 --target 选项在评论中解决,例如:tsc --target ES2016 file.ts


推荐阅读