Purify 是一个面向 TypeScript 的实用函数式编程库,强调易用性与生产环境可用性,提供代数数据类型和可组合的错误处理、数据转换工具。安装命令为 npm install purify-ts,可从 purify-ts 导入 Maybe、Either、EitherAsync、MaybeAsync,从 purify-ts/Codec 导入 Codec、string、number 等,从 purify-ts/List、purify-ts/Tuple 导入对应模块。
主要能力:Maybe 表示可选值,支持 Just、Nothing、fromNullable、fromPredicate、fromFalsy,以及 map、chain、orDefault、caseOf、filter、alt、ap、sequence、catMaybes、mapMaybe、encase 等操作。Either 表示可能失败的计算,支持 Left、Right、fromPredicate、encase,以及 map、mapLeft、chain、caseOf、orDefault、orDefaultLazy、swap、bimap、alt、sequence、lefts、rights、isLeft、isRight、extract、extractLeft、toMaybe、ifLeft、ifRight 等。EitherAsync 用于异步错误处理,支持 fromPromise、liftEither、map、mapLeft、chain、run,回调中可使用 liftEither、fromPromise、throwE。MaybeAsync 用于可能无返回值的异步操作,支持 map、chain、run、toEitherAsync、alt。Codec 提供运行时类型校验,包含 string、number、boolean、nullType 等基础编解码器,Codec.custom 自定义,Codec.interface 定义对象结构并用 GetType 推导类型,以及 array、optional、oneOf、exactly、lazy 等高级组合。
使用方式:通过方法链组合 map、chain 等操作,用 caseOf 做模式匹配,用 run 执行异步类型并得到 Promise。适用场景包括安全数组与属性访问、可选值链式处理、安全解析、API 响应处理、表单校验与错误累积、面向铁路的编程、并行请求、重试逻辑、事务模式、缓存查找等。
限制:extract 与 extractLeft 为不安全操作,在错误分支会抛错;资料未提供收费、价格、平台支持范围或性能数据,暂未提供。