使用存在类型解析原始数据

主要观点:

  • 存在类型可用于隐藏类型变量,实现抽象数据类型等,这里用于对解析后的原始结构进行类型标注。
  • TypeScript 本身不直接支持存在类型,但可通过通用量化类型来编码。
  • 用存在类型解决从未知原始数据中解析出特定类型数组的问题,客户端可在一定约束下操作数组。

关键信息:

  • 存在类型定义如type ArrayE = ∃T.Array<T>,隐藏了类型变量T
  • 编码后的ArrayE = <R>(cont: <T>(ts: Array<T>) => R) => R,表示接受一个延续函数并返回其结果。
  • parseRawArrayE函数通过判断数组长度来解析原始数据为ArrayE,成功时表示数组元素为同一未知类型T

重要细节:

  • 直接的function parseRawArray<T>(xs: unknown[]): Array<T>存在问题,仅有一种空元组的实例。
  • parseRawArrayE函数在解析成功时,客户端可操作数组,但不能随意添加任意类型元素。
  • 可在Playground中进行存在类型的实验。
阅读 13
0 条评论