typescript类型提示的问题?

怎么修改让下面的红线消失?
image.png
image.png

interface arrType {
  id?: string | number
  children?: arrType[]
}
const getAllRoleId = (arr: arrType[]) => {
  let returnAll = []
  arr.forEach((item) => {
    returnAll.push(item.id)
    if (item.children && item.children.length > 0) {
      getAllRoleId(item.children)
    }
  })
  return returnAll
}
阅读 598
2 个回答
interface arrType {
  id?: string | number
  children?: arrType[]
}
const getAllRoleId = (arr: arrType[]) => {
  let returnAll:(string | number)[] = []
  arr.forEach((item) => {
    if(item.id) {
      returnAll.push(item.id)
    }
    if (item.children && item.children.length > 0) {
      getAllRoleId(item.children)
    }
  })
  return returnAll
}

试试

在 ts 里声明数组的时候要同时声明数组元素的类型,否则 ts 会将数组类型推断为unknown[]

按照你当前给的代码,returnAll 应该是一个 Array<string | number>

不过你的 item.id 可能是 undefined,需要额外注意一下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进