在与后端开发同事对接API时, 同事问我:你们前端是如何对JSON 数据进行encode/decode 的?...gender字段当做0 | 1的枚举, 那么便有可能导致严重的业务逻辑缺陷.根本原因在于, TypeScript 不会对数据的类型进行运行时的检验, TypeScript 的类型基本上只存在于编译时.这是众多..."这个功能, 但我们今天重点讲讲io-ts.io-ts 的特殊点在于:io-ts 的校验是与TypeScript 的类型一一对应的, 完备程度甚至可以称为TypeScript 的运行时类型检查.io-ts...尤其是在A和E使用同一种类型进行表示的时候, 会更加难以分辨和处理.对此, 我们将通过tagged union type进行抽象, 类型声明如下:interface Left { readonly...{ parse: (i: I) => Either;}TypeScript 的类型系统由于我们的最终目标是实现于TypeScript 类型系统一一对应的类型检查, 所以我们先理一理TypeScript