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