这个问题对一个纯前端工程师来说是有些"奇怪"的.因为前端并不需要对JSON 进行encode/decode , 只需要对JSON string 进行parse.parse 之后的数据便是JavaScript....根本原因在于, TypeScript 不会对数据的类型进行运行时的检验, TypeScript 的类型基本上只存在于编译时.这是众多BUG 的源头, 想以下以下场景:后端的接口定义里将一个字段声明数组...页面直接崩溃了, 前端开发人员在群里被批评教育...所以在有些场景下, 我们需要为IO(Input/Output, 比如网络请求, 文件读取)数据进行类型检验.io-ts社区上有很多库提供了"对数据进行校验...I) => A;}这个类型用I表示解析器的输入, A表示解析器的输出.但这么设计有一个问题: 对于解析过程中的报错, 我们只能通过副作用(side effect)进行收集.最直接的方式是抛出一个异常(Error...这个特例推导出这个函数的普遍性抽象.Promise.all的执行逻辑(示例所用, 并非node底层实现)如下:创建一个空的Promise r, 并将其值设定为空数组: Promise.resolve([])尝试将