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[]'.