介绍
变形 & 更多
有时,您代码边界的数据在使用前需要不仅仅是验证。
变形 允许您任意变换数据的形状和格式。
变形可以在验证器之前、之后或之间管道,甚至链接到其他变形。
这是一个好的开始,但我们的变形仍有几个主要问题。
如果我们传入一个不是有效 JSON 的字符串会发生什么?
尽管 JSON.parse 可能会让您相信,抛出异常并返回 any 并不是解析字符串的好方法。默认情况下,ArkType 假设如果您的变形或收窄之一抛出异常,则您打算崩溃。
如果您确实发现自己受制于不安全的 API,您可能考虑将函数体包装在 try...catch 中。
幸运的是,有一个内置 API 用于包装您不信任的 pipe 函数:
pipe 的最佳部分是由于任何 Type 都是根可调用,Type 本身_就是_变形!这意味着验证解析输出就像添加另一个管道一样简单:
此时,我们的实现开始看起来相当干净,但是在许多像这样的情况下,我们可以直接跳到重点,使用 ArkType 的众多内置别名之一进行验证和解析,string.json.parse:
如果您已经看到这里,恭喜!您应该已经具备将类型带到运行时的所有基本直觉 ⛵
我们剩余的文档将帮助您理解 ArkType 最重要的 API 之间的权衡,以便无论在什么应用中,您都能找到一种编写、阅读和运行都感觉很棒的解决方案。