ts: for循环 Element implicitly has an ‘any‘ type because index expression is not of type ‘number‘.

文章讲述了在TypeScript中遇到的编译错误,即在for循环中元素隐式具有any类型,因为索引表达式不是number类型。作者提供了两种解决方案:一是将columns强制转换为any类型数组,二是定义ColumnsElement接口明确元素类型。通过修改props.columns的类型定义,避免了类型不安全的问题。
摘要由CSDN通过智能技术生成

ts: for循环 Element implicitly has an ‘any’ type because index expression is not of type ‘number’.

// beofre 
const props = defineProps({
  columns: {
    type: Array,
  }
})
function dataChange(data) {
  for (let item in props.columns) {
    // item报错:Element implicitly has an 'any' type because index expression is not of type 'number'.
    const key = props.columns[item].key;
    props.columns[item].visible = !data.includes(key);
  }
}

解决办法:

  • 报错信息 应该是由于 columns 元素类型不确定, 因此遍历变量item类型也不能确定
  • 找到 props.columns 的具体类型 或者 any似乎也可以
// after 使用any类型
function dataChange(data:any[]) {
  let columns = props.columns as Array<any>
  for (let item in columns) {
    const key = (columns[item]).key;
    columns[item].visible = !data.includes(key);
  }
}
// after 使用 column 真实类型
interface ColumnsElement {
  key: number,
  value: string,
  visible: boolean
}
const props = defineProps({
  columns: {
    type: Array<ColumnsElement>,
  }
})
function dataChange(data:any[]) {
  let columns = props.columns as Array<ColumnsElement>
  for (let item in columns) {
    const key = (columns[item]).key;
    columns[item].visible = !data.includes(key);
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值