interface BaseTreeNode {
id: number | string;
name: string;
childNode: BaseTreeNode[];
}
interface AntdTreeNode<T> {
key: number | string;
title: string;
children: AntdTreeNode<T>[];
data: T;
scopedSlots?: unknown;
}
function baseTreeNodesToAntdTreeNodes<T extends BaseTreeNode>(baseTreeNodes: T[]): AntdTreeNode<T>[] {
return baseTreeNodes.map(node => ({
key: node.id,
title: node.name,
children: node.childNode ? baseTreeNodesToAntdTreeNodes<T>(node.childNode) : [],
data: node,
}));
}
以上代码类型报错如下,请问下为什么?
ps: 这里用泛型是因为BaseTreeNode
是一个基类,还会有一堆派生类想共用此函数,比如:
interface FooTreeNode extends BaseTreeNode {
foo: string;
}
const fooTreeNodes:FooTreeNode[] = ...;
const antdTreeNodes = baseTreeNodesToAntdTreeNodes<FooTreeNode>(fooTreeNodes);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…