这个报错是因为在ts中写了一个对象是递归类型的,ts无法判断它深度到底是多少,所以报错了
比如这样的一段代码
interface TreeNode {
children: TreeNode[];
}
经过多方面的查找,我总结出来一些东西,记录下,希望能够帮助下同样遇到这个问题的人
1.没有办法配置TypeScript来解决对深度限制,也就是说不要寄希望于我在tsconfig.ts或者其他地方改个配置就能忽略它的检查。甚至使用代码的忽略校验命令也是无效的
// @ts-ignore 无效的
// @ts-expect-error 无效的
2.断言的方法也是无效的
function wuxiao (data:TreeNode ){
let aa = data.children as any
}
3.解决办法又两个
一是从源码角度去修改TreeNode (前提是你调用的不是第三方库)
二是曲线救国,在使用的时候尽量把这个东西作为参数传递到一个方法里面,并且在方法中给这个参数加断言,就像这样
function youixao (data:any){
let aa = data.children
}
尽量的欺骗到ts,让他不去做这个检查
如果有更好的解决办法,希望能够在评论区留言