在TypeScript

时间:2016-04-01 15:13:18

标签: typescript runtime-error static-typing

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

示例:

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

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

强制执行接口的问题是TypeScript只是一个编译时概念,并且在运行时不强制执行任何操作。知道了这一点,我很好奇是否有人在没有大量样板或工具的情况下找到了一种聪明的方法,以便在运行时为这些事情进行类型检查,而不必将接口契约重复为一组必要的检查作为验证步骤

在一个有点相关的说明中,在most recent episode of Functional Geekery中,Matthias Felleisen解释了在剧集尾部附近的Typed Racket中的类似需求。

相关阅读:

1 个答案:

答案 0 :(得分:3)

检查这两个等效项目:

我使用最新的,它完美无缺,但前者看起来也很棒。

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

的验证器
  • 在运行时检查对象
  • 提取可在编译时使用的静态类型

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

您还可以从JSON数据轻松生成输入:

http://json2ts.com/