Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用TypeScript编译代码_Javascript_Typescript_Ecmascript 6_Babeljs - Fatal编程技术网

Javascript 用TypeScript编译代码

Javascript 用TypeScript编译代码,javascript,typescript,ecmascript-6,babeljs,Javascript,Typescript,Ecmascript 6,Babeljs,我正在学习一个关于typescript的入门教程,其中有一个main.ts文件 梅因酒店 function dosomething(){ for(let i=0;i<3;i++) { console.log("i "+ i); // line a } console.log("Finally "+ i); //Line b } dosomething(); //calling the function 函数dosomething(){ 对于(让i=0;i

我正在学习一个关于typescript的入门教程,其中有一个main.ts文件

梅因酒店

function  dosomething(){
for(let i=0;i<3;i++)
    {
    console.log("i "+ i); // line a
    }

  console.log("Finally "+ i); //Line b
}

dosomething(); //calling the function
函数dosomething(){

对于(让i=0;iTypeScript并不总是像Babel那样严格遵循规范,而是生成更干净、更可读的输出。但是当前情况可以由两个Transpiler正确处理

上面的代码在第b行中包含错误,该错误使用了当前作用域中不存在的
i
变量。问题是TypeScript配置不正确,并且在出现错误时发出错误编译的代码,这会产生误导。防止这种情况的一种方法是使用

当代码正确时,TypeScript和Babel都会正确处理作用域(不能传输到ES5的时间死区除外)

对于全局
i
变量,此类型脚本代码

declare var i;

for(let i=0;i<3;i++) {
  console.log("i "+ i); // line a
}

console.log("Finally "+ i); //Line b
应编译为

for (var i_1 = 0; i_1 < 3; i_1++) {
    console.log("i " + i_1); // line a
}
console.log("Finally " + i); //Line b
var i;
for (var i_1 = 0; i_1 < 3; i_1++) {
    console.log("i " + i_1); // line a
}
console.log("Finally " + i); //Line b
vari;
对于(变量i_1=0;i_1<3;i_1++){
console.log(“i”+i_1);//行a
}
console.log(“Finally”+i);//行b

是的,如果您有typescript将其编译为JS,您不需要babel。我仍然不理解您的问题,但我的回答是:不要编写非法代码,即使它以某种方式编译。只需正确编写代码。TS仍会在某些类型的错误上发出代码,babble和TS都会发出ES5,并且应该会生成功能等效的代码,当代码中出现错误时,处理方式可能会有所不同,但不应忽略错误,而且应该很好
for
循环中设置块作用域。通常不能在循环外部访问它。如果要在循环外部使用它,应在循环外部声明它。
for (var i_1 = 0; i_1 < 3; i_1++) {
    console.log("i " + i_1); // line a
}
console.log("Finally " + i); //Line b
let i;

for(let i=0;i<3;i++) {
  console.log("i "+ i); // line a
}

console.log("Finally "+ i); //Line b
var i;
for (var i_1 = 0; i_1 < 3; i_1++) {
    console.log("i " + i_1); // line a
}
console.log("Finally " + i); //Line b