Typescript 为什么控制台似乎仍然考虑变量有类型:当在类型化脚本中声明时有其他变量吗?

Typescript 为什么控制台似乎仍然考虑变量有类型:当在类型化脚本中声明时有其他变量吗?,typescript,Typescript,我很好奇为什么在typescript中,这样的代码可以工作 let number = 35; console.log(number); let numbers: boolean = 35; console.log(numbers + number); 输出70 为什么控制台不返回未定义的?typescript的一部分不就是为变量分配静态类型吗 谢谢 您可以将静态类型分配给变量,这不是类型点脚本的一部分吗 对 无论您使用什么控制台,它似乎都非常不寻常,因为它似乎接受类型脚本类型的注释,但忽

我很好奇为什么在typescript中,这样的代码可以工作

let number = 35;

console.log(number);

let numbers: boolean = 35;

console.log(numbers + number);
输出70

为什么控制台不返回未定义的?typescript的一部分不就是为变量分配静态类型吗

谢谢

您可以将静态类型分配给变量,这不是类型点脚本的一部分吗

无论您使用什么控制台,它似乎都非常不寻常,因为它似乎接受类型脚本类型的注释,但忽略它们。否则,这显然会失败:

let numbers: boolean = 35;
因为35不是布尔值

当TypeScript将TypeScript代码编译为JavaScript代码时,TypeScript会在编译时捕获类型错误。但是,即使出现类型错误,编译器通常也会输出生成的JavaScript,当然,JavaScript是松散类型的,所以它不在乎。这意味着您实际运行的代码可能是:

var number = 35;
console.log(number);
var numbers = 35;
console.log(numbers + number);
--您可以单击Run,它将显示35和70


我认为这里的要点是:如果TypeScript显示错误,不要运行生成的JavaScript代码(或者如果运行了,也不要关注运行结果)。

你完全正确,TypeScript应该抛出错误,然而,虽然codepen声称支持typescript,但它实际上并没有工作错误突出显示,我建议您尝试官方版本


然而,通常transpiler会输出javascript,即使有错误,所以一定要小心,并对您可能看到的任何类型脚本错误给予最大的关注。

您在哪个控制台中执行此操作?我知道的大多数控制台都是JavaScript控制台,而不是TypeScript控制台。我预计上面会出现语法错误。
let numbers:boolean=35类型脚本肯定会被它卡住<代码>35不是布尔值。您使用的是什么控制台?Chrome:Uncaught SyntaxError:Uncontracted token:我正在使用codepenYeah,也许我应该找到一个不同的控制台,因为它甚至没有显示任何错误。。。奇怪。@NOAH-我对此感到非常惊讶,但我刚刚访问了codepen.io,并将其设置为使用TypeScript作为“预处理器”,我肯定在任何地方都没有看到任何错误。(我不使用CodePen,但我希望在某个地方出现一些“预处理”错误的迹象。)