顺便说一句,为了更好地说明我要找的内容,请查看这个库:
https://github.com/vriad/zod它允许您在设计和编译时定义类似于spec的模式,这些模式也可以被TS编译器所理解和使用。
// 规范定义 - 在TS编译后存在,可用于验证模式
const dogSchema = z.object({
name: z.string(),
neutered: z.boolean(),
});
// 在运行时验证模式
const cujo = dogSchema.parse({
name: 'Cujo',
neutered: true,
}); // 通过,返回 Dog
// TypeScript 类型定义 - 在TS编译后不存在
购买 Dog = z.infer<typeof dogSchema>;
/*
相当于
类型 Dog = {
name:字符串;
sterilized:布尔值;
}
*/
// 使用推断的类型进行编译时类型检查和设计时智能感知
const fido:Dog = {
name: 'Fido',
}; // TypeError: 缺少必填属性 'sterilized'