}`);由于JSON.parser返回类型为any, 故在我们需要显示地声明user变量为User类型.但是如果JSON 数据为:{ "gender": 2}这个时候我们的parse 代码还是会成功运行..., 但这个时候如果程序中我们还是按照类型声明那样将gender字段当做0 | 1的枚举, 那么便有可能导致严重的业务逻辑缺陷.根本原因在于, TypeScript 不会对数据的类型进行运行时的检验, TypeScript...的类型一一对应的, 完备程度甚至可以称为TypeScript 的运行时类型检查.io-ts 使用的是组合子(combinator)作为抽象模型, 这与大部分validator generator有本质上的区别...中, 我们也是经常使用"组合" 的方式组合类型:type Union = A | B;type Intersect = A & B;在这个例子中, 我们使用 | 和 & 作为组合子, 将类型A和B组合成新的类型...(ADT)等, 覆盖面之广, 是仅仅一篇博客无法讲完的.有兴趣的读者推荐这篇教程.