chore: bump version to 0.0.43, enhance JSON Schema type inference, and add usage examples

This commit is contained in:
2026-02-18 03:00:20 +08:00
parent ec094a594b
commit 554ff14fdc
5 changed files with 400 additions and 27 deletions

View File

@@ -10,34 +10,34 @@ console.log("JSON Schema for the person object:");
console.log(
JSON.stringify(toJSONSchema(schema), null, 2)
);
const jsonSchema = toJSONSchema(schema);
// const jsonSchema = toJSONSchema(schema);
const schema2 = z.fromJSONSchema(jsonSchema);
// const schema2 = z.fromJSONSchema(jsonSchema);
// schema2 的类型是 ZodSchema<any>,所以无法在编译时推断出具体类型
// 这是 fromJSONSchema 的限制 - JSON Schema 转换会丢失 TypeScript 类型信息
// // schema2 的类型是 ZodSchema<any>,所以无法在编译时推断出具体类型
// // 这是 fromJSONSchema 的限制 - JSON Schema 转换会丢失 TypeScript 类型信息
schema2.parse({
name: "John Doe",
age: 30, // 添加必需的 age 字段
email: "",
})
// schema2.parse({
// name: "John Doe",
// age: 30, // 添加必需的 age 字段
// email: "",
// })
type Schema2Type = z.infer<typeof schema2>;
// Schema2Type 被推断为 any
// type Schema2Type = z.infer<typeof schema2>;
// // Schema2Type 被推断为 any
// 对比:原始 schema 的类型推断是正常的
type OriginalSchemaType = z.infer<typeof schema>;
// OriginalSchemaType = { name: string; age: number; email?: string | undefined }
// // 对比:原始 schema 的类型推断是正常的
// type OriginalSchemaType = z.infer<typeof schema>;
// // OriginalSchemaType = { name: string; age: number; email?: string | undefined }
const v: Schema2Type = {
name: "John Doe",
email: ""
}
// const v: Schema2Type = {
// name: "John Doe",
// email: ""
// }
// 如果使用原始 schema,类型推断会正常工作:
const v2: OriginalSchemaType = {
name: "John Doe",
age: 30,
// email 是可选的
}
// // 如果使用原始 schema,类型推断会正常工作:
// const v2: OriginalSchemaType = {
// name: "John Doe",
// age: 30,
// // email 是可选的
// }