interface Props {
a: string;
b: number;
c?: boolean;
}
const fun = ({a, b, c}: Props) => {
// 参数类型校验失败不执行后续, 比如 a/b 未传,或者 a/b/c 类型不正确
// TODO
}
请问有什么比较好的方法可以校验参数,如果校验失败就抛出异常,或者不执行 fun 后续操作 qaq
1
mmdsun 312 天前
不是很明白,这个代码不是 TypeScript 的么?传参不对,编译时应该有提示错误吧?难道是把 ESLint 全部关闭了?
纯 js 的话可以用框架校验,编写 schema import * as Joi from "joi"; const schema = Joi.object({ a: Joi.string().required(), b: Joi.number().required(), c: Joi.boolean(), }); const validation = schema.validate(props) |
2
mipawn 312 天前
如果是类的方法,可以考虑装饰器,如果是普通函数,可以往高阶函数方向尝试
|
3
knives 312 天前
一种方案是,先写验证器,再使用验证器构造类型。如: https://github.com/colinhacks/zod
|
4
lisongeee 312 天前
这个得用 typescript 编译器宏,就是传入一个 typescript 类型,返回一个校验器 js 对象
如果是 vite/webpack 可以用自定义 plugin 实现 |
8
Cheez 312 天前
那就 assert 一下
|