我正在try 编写一个泛型函数,该函数接受一组值并构建一个树 struct .该函数的输出应返回与泛型类型相同的属性,但带有额外的递归children
属性.
举个例子:
const items = [
{ id: 1, path: 'a', name: 'path1' },
{ id: 2, path: 'a,b', name: 'path2' },
{ id: 3, path: 'a,b,c', name: 'path3' },
];
interface Example {
id: number;
path: string;
}
export function test<T extends Example>(items: T[]) {
// for brevity ... build the tree
// I copy each item into a new object and add the children: { ...item, children: [] as ??? } as ???
return tree;
}
在上面的示例中,树项目之一将是:
[{
id: 1,
path: 'a',
name: 'path1',
children: [{ id: 2, path: 'a,b', name: 'path2', children: [ {...} ] }]
}]
但是,我不确定如何指定返回类型.我希望所有相同的属性都可用,再加上子级数组,不管子级深入到什么程度.我try 了这样的方法:(T & {children: T})[]
,但这只适用于一个级别的子元素.
感谢您的帮助,谢谢!