当前位置: 首页 > 知识库问答 >
问题:

typescript类型提示的问题?

姬成荫
2024-04-28

怎么修改让下面的红线消失?
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}

共有2个答案

孔正文
2024-04-28

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

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

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

华献
2024-04-28
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}

试试

 类似资料:
  • 我想解决的是res.Code下面的红线问题 下面是loginApi接口的类型定义: 其中UserType类型的定义: IResponse类型的定义: 为什么Promise的返回值Code,Data,Msg下面都带红线? 代码:

  • 在文件 /src/stores/otpInfos.ts 的第 7 行,TypeScript 报出以下错误(但是执行 pnpm dev 运行是没有任何问题的): 如果没有引用 ".pnpm/@vueuse+shared@9.13.0_vue@3.3.4/node_modules/@vueuse/shared",则无法命名 "useOTPInfosStore" 的推断类型。这很可能不可移植。需要类型注

  • 问题内容: class Node: def append_child(self, node: Node): if node != None: self.first_child = node self.child_nodes += [node] 我该怎么办?因为当我运行它时,它说。 我应该只删除and实例在函数中检查它吗?但是,我该如何访问的属性(我希望它是类的实例)? 我不知道如何在Python,

  • 定义如下 使用 出现下面的报错: 为什么在使用typeof的情况下ts对类型判断还是有问题?平常在消费联合类型的时候,都只需要借助typeof就能达到缩小类型范围的目的,但是这里没有效果,我想问下什么时候会出现这种问题? 我知道解决方案: 通过强制的类型断言来告诉ts这是一个函数 通过is关键字来做类型预测 但是不知道什么时候需要这么去解决,只有报错的时候才会尝试这么去解决,恳求大佬解惑。

  • 代码如下,这是一段示例代码 那段for循环是想过滤有效数据。 问题是这段代码ts报错,代码逻辑没问题,问题的根本出在MenuItem的类型定义上,本意是想定义一个二级级联数据MenuItem,之所以使用T extends string而不是直接写为string,是因为在某些交互函数的参数中,希望将代表command的参数定义一个固定的可选数据CommandType。 当有子级数据的时候,关心的是子

  • 给定一条数据结构(API数组里面的个数是未知的)如下所示 如何推导出类似这样的类型 即 name 作为key, 如果存在table即为boolean类型,否则为unknown类型 ts的大神们,这个该如何写啊,百度,谷歌都折腾了,还问了gpt也不行,就是值推不出来 我写的是这样的