硬类型的数字在TypeScript中变成了字符串

时间:2017-03-06 17:22:21

标签: javascript typescript

免责声明。请注意,这不是一个关于为什么JavaScript中的1和'1'不同的问题。这不是关于=====之间差异的问题。这不是关于如何比较1和'1'的问题。

我有以下代码。

test(input: number) {
  let index = 5;
  console.log(typeof (index) + " " + typeof (input));
  console.log(index === input);
}

第一行打印数字字符串,当然,第二行是 false 。我不能为我的生活理解它。谷歌搜索20分钟 - 我只看到示例表明接收参数是硬键入的,应该是一个数字。

我错过了什么?

1 个答案:

答案 0 :(得分:5)

你在TypeScript中使用了“硬类型”一词,它只是不是。 TypeScript不会自动转换运行时值;如果您有JavaScript代码并使用错误输入的参数调用TypeScript代码,则不会进行“修复”转换。

请记住:TypeScript和JavaScript 具有相同的运行时语义。关于为什么===在TypeScript中有一些运行时结果的问题与JavaScript问题完全相同(已经在StackOverflow上问了几百次,所以我不会讨论它。)