typescript - 基于 Zod 模式转换接口泛型
我有这个接口 I:
import { z } from "zod";
const schema = z.object({
name: z.string(),
});
type S = z.infer<typeof schema>;
interface I {
process: (obj: S) => object;
schema: z.ZodSchema;
}
它包含一个 Zod 架构和一个用于处理已验证结果的函数。(假设我有充分的理由不在 process 函数中进行验证。)
我想把它变成一个接口,该接口基于 Zod 模式,确保 schema 包含所述的模式,并且 process 接受一个符合模式 TypeScript 类型的 obj 作为参数。
答案#1
z.ZodSchema 是一个通用类,你可以在其中定义你想要的模式类型。
基本上,你应该将你的接口重构为如下内容:
interface I<T> {
process: (obj: T) => object;
schema: z.ZodSchema<T>;
}
现在 I.schema 接受具有给定类型的 z.ZodSchema,与 I.process 函数使用的类型相同。
在这里查看
