用途:这是一套面向静态类型语言的原则性技能,核心观点是把类型检查器当作证明助手,用类型在编译期消除不可能状态、错配的原语和未处理的变体。适用于设计类型、审查函数签名或编写任何静态类型语言代码时。
主要能力与模式:让非法状态不可表示,用和类型(TypeScript 判别联合、Rust/Swift/Kotlin 带载荷枚举、Scala 密封类、Haskell/OCaml 代数数据类型)建模变体,避免用一堆可选字段表达互相矛盾的组合;类型是构造而非限制,从想要的取值向上构造类型,例如非空列表是头加尾,而非带长度检查的列表;为语义原语加品牌,UserId 与 OrderId 底层都是字符串但不可互换,可用 Rust newtype、Swift 不透明类型、Kotlin 值类、Haskell phantom 类型、TypeScript 品牌交叉类型,创建时校验一次,下游信任类型;外部数据在解析前都是无类型的,RPC、JSON、IPC、CLI 参数、配置文件、环境变量、数据库行都应在边界处用解析函数转为类型化模型;不要对类型系统撒谎,强制转换、不安全强制和断言函数会埋下运行时崩溃;穷尽匹配交给编译器,新增变体未处理时应编译失败;从权威 schema 派生类型,如 protobuf、OpenAPI、GraphQL、数据库迁移或设计令牌文件;只在出现部分性时加强类型,优先全函数。
使用方式:作为原则技能,它本身不提供具体语法,需配合具体语言的最佳实践技能落地。
适用场景与限制:适用于任何有类型系统的语言。资料未提供安装命令、收费、价格或平台信息。