Javascript 硬输入的数字在TypeScript中是字符串

Javascript 硬输入的数字在TypeScript中是字符串,javascript,typescript,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

免责声明。请注意,这不是JavaScript中1和“1”为何不同的问题。这不是关于
=
=
之间的区别的问题。这不是一个如何比较1和“1”的问题

我有下面的代码

test(input: number) {
  let index = 5;
  console.log(typeof (index) + " " + typeof (input));
  console.log(index === input);
}
第一行打印数字字符串,当然,第二行为false。我一辈子都不能理解它。在谷歌上搜索20分钟——我只看到一些例子显示参数的接收是硬输入的,应该是一个数字

我遗漏了什么?

您使用了术语“硬输入”,这在TypeScript中并不常见。TypeScript不会自动转换运行时值;如果您有JavaScript代码,并且调用的TypeScript代码的参数类型不正确,则不会发生“修复”该问题的转换


请记住:TypeScript和JavaScript具有相同的运行时语义。关于为什么
==
在TypeScript中有一些运行时结果的任何问题都与JavaScript问题完全相同(关于StackOverflow的问题已经被问了数百次了,所以我就不深入讨论了).

let index=5
不同于
num:number=5
那么您如何调用函数?@Pointy它从DOM元素获取ID。我感到惊讶的是,它是一个字符串,即使我说我希望参数是数字……在运行时,键入是不强制的。您很可能正在使用字符串参数调用
test
,然后就是您的答案。DOM“id”属性值是字符串。我不喜欢这个解释,因为它与我的懒惰和习惯C#相冲突。我很不情愿地接受了答案并+1你。另外,我有点为自己没有看到它而感到羞愧