lig*_*sky 7 runtime typescript zod
我有一个用于分页响应的通用接口:
export interface PaginatedResponse<T> {
pageIndex: number;
pageSize: number;
totalCount: number;
totalPages: number;
items: Array<T>;
}
Run Code Online (Sandbox Code Playgroud)
然后我想将其转换为 zod 模式以进行运行时类型检查。方法是这样的:
const PaginatedResponseSchema = z.object({
pageIndex: z.number(),
pageSize: z.number(),
totalCount: z.number(),
totalPages: z.number(),
items: z.array(???), // <=
});
export type PaginatedResponse<T> = z.infer<typeof PaginatedResponseSchema>;
Run Code Online (Sandbox Code Playgroud)
什么类型的数组应该是架构中的项目?
Sou*_*man 13
您可以创建一个通用函数,该函数在给定字段架构的情况下返回新架构items。例如你可以这样写:
function createPaginatedResponseSchema<ItemType extends z.ZodTypeAny>(
itemSchema: ItemType,
) {
return z.object({
pageIndex: z.number(),
pageSize: z.number(),
totalCount: z.number(),
totalPages: z.number(),
items: z.array(itemSchema),
});
}
Run Code Online (Sandbox Code Playgroud)
文档中的这一部分zod详细介绍了通用函数。
| 归档时间: |
|
| 查看次数: |
12823 次 |
| 最近记录: |