gpt4 book ai didi

具有子/父引用的 Angular/typescript 树 - 如何避免在声明之前使用 Block-scoped 变量

转载 作者:行者123 更新时间:2023-12-04 10:53:28 25 4
gpt4 key购买 nike

让我们有一个非常简单的节点/对象树,其中包含父节点和子节点引用,我们需要在其中引用父节点和子节点。这里棘手的部分是我们不仅要在树中设计和使用节点,还要独立于树/单独设计和使用节点。意思是,我们不能直接将它们嵌套到父节点中,而是通过引用在父节点中引用子节点。这提出了 Typescript 错误的问题:

2448 block 作用域变量“rootNode”在其声明之前使用。ts(2448)

如果我们按降序排列节点,我们可以引用上面的子节点。但不是下面的 parent 。反之亦然。如果我们将 parent 放在 child 之上,我们就不能引用 child ,因为他们是在他们之后声明的。

似乎 Typescript 不够复杂,无法预编译声明并会抛出错误。

如何解决?

这里是树节点的示例(按降序排列)及其带有引用的“独立”节点:

    export interface Node {
id: string,
value?: string,
parent?: Node,
children?: Node[]
}

export const nodeB2: Node = {
id: 'B2',
value: 'bbb-2',
parent: nodeA1 // ERR 2448
}

export const nodeB1: Node = {
id: 'B1',
value: 'bbb-1',
parent: nodeA1 // ERR 2448
}

export const nodeA1: Node = {
id: 'A1',
value: 'aaa-1',
parent: rootNode, // ERR 2448
children: [nodeB1, nodeB2]
}

export const rootNode: Node = {
id: 'ROOT',
value: 'root',
children: [nodeA1]
}

最佳答案

试一试:

declare let rootNode: Node;

export interface Node {
id: string,
value ? : string,
parent ? : Node,
children ? : Node[]
}

export const nodeB2: Node = {
id: 'B2',
value: 'bbb-2',
parent: rootNode // ERR 2448
}

export const nodeB1: Node = {
id: 'B1',
value: 'bbb-1',
parent: rootNode // ERR 2448
}

export const nodeA1: Node = {
id: 'A1',
value: 'aaa-1',
parent: rootNode, // ERR 2448
children: [nodeB1, nodeB2]
}

rootNode = {
id: 'ROOT',
value: 'root',
children: [nodeA1]
};

export default rootNode;

关于具有子/父引用的 Angular/typescript 树 - 如何避免在声明之前使用 Block-scoped 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59350139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com