为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

交互式爱情 2021-09-04 17:49:32
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
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您正在连接数组属性名称,而不是它的值。这是因为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 numbers

for (const i in arr1) {

  console.log(doConcat(arr1[i], 1));

}


const arr2 = ['a', 'b', 'c']; //Should bomb - trying to concat number and string

for (const j in arr2) {

  doConcat(arr2[j], 1);

}


查看完整回答
反对 回复 2021-09-04
  • 3 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信