typescript 基于Zod模式的Turn接口泛型

iqjalb3h  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(143)

我得到了这个接口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

ibps3vxo

ibps3vxo1#

z.ZodSchema是一个泛型类,您可以在其中定义所需架构的类型。
基本上,您只需将界面重构为以下内容:

interface I<T> {
  process: (obj: T) => object;
  schema: z.ZodSchema<T>;
}

现在I.schema接受给定类型的z.ZodSchema,与使用I.process函数相同

相关问题