Javascript TypeScript中的变量声明出错
我知道,TypeScript用等价的代码生成JavaScript文件 但是,这里有一个问题,TypeScript不能生成等价的JavaScript代码 演示文稿 demo.js 如上所述,我在demo.ts文件中声明了一个区域设置变量myName。但是,看看JavaScript代码,它将myName变量声明为全局变量 概要:在我的例子中,TypeScript生成的JavaScript代码的变量始终在全局范围内Javascript TypeScript中的变量声明出错,javascript,typescript,Javascript,Typescript,我知道,TypeScript用等价的代码生成JavaScript文件 但是,这里有一个问题,TypeScript不能生成等价的JavaScript代码 演示文稿 demo.js 如上所述,我在demo.ts文件中声明了一个区域设置变量myName。但是,看看JavaScript代码,它将myName变量声明为全局变量 概要:在我的例子中,TypeScript生成的JavaScript代码的变量始终在全局范围内 所以,代码末尾的意思改变了。为什么?我认为您正在使用类似webpack的东西,使用ba
所以,代码末尾的意思改变了。为什么?我认为您正在使用类似webpack的东西,使用babel来传输代码 你需要告诉巴贝尔你的目标浏览器 例如,如果您的目标是最后一个读取let和const的chrome,则编译后的代码不会更改 更新: 在评论中解决 使用-目标选项
ex:tsc-target ES2016 file.ts您是否希望您的代码导致引用错误?如果您将TS代码作为JS运行,这也是一个有效的JS代码,那么您将得到一个引用错误,因为let导致myName的作用域为If,因此console.log将无法使用它。您共享的JS不会有这个问题,因为myName将被提升到foo的作用域而不是全局作用域。@TheJim01…是的,我希望它会给出引用错误。因为,我在TS代码中声明了locale变量,但它在JS代码中充当全局变量。所以,很明显,浏览器将其视为一个全局变量。这是我不想要的。嘿,桑德罗,我向你投降。我不知道什么是巴贝尔或如何告诉我的目标浏览器巴贝尔!你能告诉我更多关于这个的信息吗?你能告诉我你使用了什么起始代码吗?因为有几种设置方法,如果您的项目是新的,我认为您可以在package.json browserslist:['last 1 Chrome versions']中配置浏览器目标。我只创建了demo.ts文件,其中包含升华文本3。package.json文件在哪里?您也可以在这里看到babel Transfile代码,您能再给我一次机会吗尝试此tsc-target ES2016 demo.ts
function foo()
{
if(1)
{
let myName = "Raktim";
}
console.log(myName);
}
foo();
function foo() {
if (1) {
var myName = "Raktim";
}
console.log(myName);
}
foo();