Javascript 使用类似指针的树时Typescript记录错误

Javascript 使用类似指针的树时Typescript记录错误,javascript,typescript,Javascript,Typescript,我有一个函数可以遍历节点并将它们放置在树中: 这是接口类型 interface IDataObj { children: IDataObj[], frontmatter : { type: string, title: string, path: string}, name: string, relativeDirectory: string, } 其中有我的指针和树: let tree: Record<string, IDataObj> =

我有一个函数可以遍历节点并将它们放置在树中:

这是接口类型

interface IDataObj { 
    children: IDataObj[],
    frontmatter : { type: string, title: string, path: string},
    name: string,
    relativeDirectory: string,
  }
其中有我的指针和树:

let tree: Record<string, IDataObj> = {};
createNode
中的某个点上,有一个简单的算法来决定放置节点的位置并更改树的指针:

        ptr[path[i]] = ptr[path[i]] || node;
        ptr[path[i]].children = ptr[path[i]].children || {};
        ptr = ptr[path[i]].children; // < this is giving me errors, ptr = 
ptr[path[i]]=ptr[path[i]||节点;
ptr[path[i]].children=ptr[path[i].children |{};
ptr=ptr[path[i]]。子项;//<这给了我错误,ptr=
ptr现在指向chil的最后一行

Type 'IDataObj[]' is not assignable to type 'Record<string, IDataObj>'.
  Index signature is missing in type 'IDataObj[]'.
类型“IDataObj[]”不能分配给类型“Record”。
类型“IDataObj[]”中缺少索引签名。

我不知道如何解决这个问题。看来我是在利用js的松散类型能力来解决这个问题。

仔细看看您定义的类型。你是说我想把
子对象
一个类型为
数组
的变量赋给一个类型本质上是
对象的对象

那么,数组和带有字符串键的and对象是不同的。使用一个。
Type 'IDataObj[]' is not assignable to type 'Record<string, IDataObj>'.
  Index signature is missing in type 'IDataObj[]'.