定义相互递归的 zod 模式

问题描述 投票:0回答:1

我是 TypeScript 的新手,我在以下代码中遇到错误:

import { z } from "zod";

export const SpatialEntity = z.object({
  dimension_units: z.string().optional(),
  placement: SpatialPlacement
});

export const SpatialPlacement = SpatialPlacementCommon.extend({
  source: z.string().or(SpatialEntity).optional(),
  target: z.string().or(SpatialEntity)
});

错误很直接......因为变量是相互依赖的。

ReferenceError: Cannot access 'SpatialPlacement' before initialization

如果我互换上述变量,即如果我先写

SpatialPlacement
然后
SpatialEntity
那么错误也是一样的。

知道如何解决这个问题吗?任何线索将不胜感激。谢谢!

typescript typescript-generics referenceerror zod
1个回答
0
投票

我认为你必须改变代码的结构。
这可能会导致 SpatialPlacement 的无限循环,在 SpatialEntity 内部,它有另一个 SpatialPlacement,带有 SpatialEntity 等。

© www.soinside.com 2019 - 2024. All rights reserved.