【发布时间】:2022-12-18 20:32:47
【问题描述】:
我有这个:
export interface RegionNode {
nodeSelected: boolean;
nodeEditable: boolean;
zone: Partial<Zone>;
parent: RegionNode | null;
children: RegionNode[];
}
我想要一个通用函数来执行此操作:
function setNodeAndChildrenProperty(node: RegionNode, property: keyof RegionNode, state: boolean): void {
// @ts-ignore
node[property] = state;
for (const child of node.children) {
setNodeAndChildrenProperty(child, property, state);
};
}
但是正如您所看到的,我不得不使用@ts-ignore,因为我不知道如何将允许的属性列表限制为“nodeSelected”和“nodeEditable”等问题。
解决这个问题的优雅方法是什么?
【问题讨论】:
-
不相关,但在新代码中我会使用
for-of而不是forEach:for (const child of node.children) { /*...*/ } -
@T.J.Crowder 完成
标签: typescript typescript-generics