附言。为了更好说明我想要什么,请查看这个库:
https://github.com/vriad/zod它允许你在设计/编译时定义由TS编译器理解并使用的类似规范的schema。
//规范定义 - 在TS编译之后存在并可用于验证schema
const dogSchema = z.object({
name: z.string(),
绝育: z.boolean(),
});
// 验证运行时模式
const cujo = dogSchema.parse({
name: 'Cujo',
neutered: true,
}); // 通过,返回 Dog
// TypeScript 类型定义 - 在 TS 编译后不存在
type Dog = z.infer<typeof dogSchema>;
/*
等同于
type Dog = {
name: string;
neutered: boolean;
}
*/
// 使用推断类型进行编译时类型检查和设计时智能感知
const fido: Dog = {
name: 'Fido',
}; // TypeError: 缺失必需属性 `neutered`