TypeScript 有没有办法警告“1”+ 1 =“11”?

JavaScript 充满了这样的警告:


const arr = [1, 2, 3]


for (const i in arr) {

  console.log(i + 1)

}


没有经验的 JS 开发人员的预期结果是1 2 3,但实际上,它是01 11 21.


看起来 TypeScript 没有警告默认情况下连接字符串和数字,有没有办法实现这一点?


更准确地说:我怎样才能收到有关案例的警告,例如 '1' + 1


交互式爱情
浏览 144回答 3
3回答

猛跑小猪

您正在连接数组属性名称,而不是它的值。这是因为for...in迭代对象的属性。我认为你想要做的是:const arr = [1, 2, 3]for (const i in arr) {  console.log(arr[i] + 1)}您始终可以在其中编写一些代码来验证输入的类型,但首先了解for...in循环很重要- 这里是一些有关for...in与数组一起使用的文档您可以使用typeof在您的函数中进行简单的类型检查:function doConcat(operand1, operand2) {  if (typeof operand1 !== typeof operand2) { //simple typeof check    console.log(`Cannot concat type: ${typeof operand1} with type: ${typeof operand2}`);    return;  }  return operand1 + operand2;}const arr1 = [1, 2, 3]; //Should work - adding 2 numbersfor (const i in arr1) {  console.log(doConcat(arr1[i], 1));}const arr2 = ['a', 'b', 'c']; //Should bomb - trying to concat number and stringfor (const j in arr2) {  doConcat(arr2[j], 1);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript