TypeScript 5.x 装饰器与类型体操在复杂表单验证中的应用
TypeScript 5.0 正式支持了 TC39 标准装饰器,结合强大的条件类型,可以写出兼具类型安全与声明式风格的代码。
function Required(target: any, context: ClassFieldDecoratorContext) {
return function (initialValue: any) {
if (initialValue == null) throw new Error('Field is required');
return initialValue;
};
}
配合 Zod 或 Valibot 做运行时输入推断,可以做到「一套校验 Schema,兼具运行时拦截与编译期类型推导」。大家现在表单验证更倾向于手写 schema 还是装饰器?