gpt4 book ai didi

typescript - 在 TypeScript 中对非类型化数据强制类型化

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:14 26 4
gpt4 key购买 nike

我想知道在使用 TypeScript 时是否有任何工具或技术用于对对象数据进行低级别验证。一个示例是 HTTP 服务上的 POST 请求的 JSON 正文。通常我会为预期的数据创建一个接口(interface),然后将数据转换到该接口(interface),但我知道这是肤浅的。

例子:

router.route('/supercres')
.get((req, res, next) => {
const typedBody = <SuperCresBody>req.body;
})

interface SuperCresBody {
name: string,
yoyo: boolean,
}

强制执行接口(interface)的问题在于 TypeScript 只是一个编译时概念,不会在运行时强制执行任何内容。知道这一点后,我很好奇是否有人找到了一种无需大量样板文件或工具的聪明方法,以便在运行时对这些东西进行类型检查,而不必将接口(interface)契约作为一组命令性检查作为验证步骤重复进行。

在某种程度上相关的注释中,在 most recent episode of Functional Geekery , Matthias Felleisen 在剧集尾声附近解释了 Typed Racket 中的类似需求。

相关阅读:

最佳答案

检查这 2 个等效项目:

我用的是最新的,它运行完美,但前者看起来也很棒。

在这两种情况下,您都构建了一个验证器,用于:

  • 运行时检查对象
  • 提取一个可以在编译时使用的静态类型

在您的特定 (api) 用例中,您还可以使用一些工具从您生成的 JSON 或 XML 中提取 TS 类型

您还可以从 JSON 数据轻松生成类型:

http://json2ts.com/

关于typescript - 在 TypeScript 中对非类型化数据强制类型化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36359874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com