jpi*_*son 5 runtime-error static-typing typescript
我想知道在使用 TypeScript 时是否有任何工具或技术用于对对象数据进行低级验证。一个示例是 HTTP 服务上的 POST 请求的 JSON 正文。通常,我会为预期数据创建一个接口,然后将数据转换到该接口,但我知道这很肤浅。
例子:
router.route('/supercres')
.get((req, res, next) => {
const typedBody = <SuperCresBody>req.body;
})
interface SuperCresBody {
name: string,
yoyo: boolean,
}
Run Code Online (Sandbox Code Playgroud)
强制执行接口的问题在于 TypeScript 只是一个编译时概念,在运行时不会强制执行任何内容。知道这一点,我很好奇是否有人找到了一种不需要大量样板或工具的聪明方法,以便在运行时完成这些事情的类型检查,而不必将接口契约作为一组命令性检查作为验证步骤来重复。
与此相关的一点是,在最新一集的 Function Geekery中,Matthias Felleisen 在该集末尾附近解释了 Typed Racket 中的类似需求。
相关阅读:
检查这 2 个等效项目:
我使用最新的,它工作完美,但前者看起来也很棒。
在这两种情况下,您都会构建一个验证器,用于:
在您的特定 (api) 用例中,您还可以使用一些工具从您生成的 JSON 或 XML 中提取 TS 类型
您还可以从 JSON 数据轻松生成类型:
| 归档时间: |
|
| 查看次数: |
1242 次 |
| 最近记录: |