SuperAPI AI 工具集

type-level-error-messages

编程与开发

查看项目

更新于 10-15 21:38

技能介绍

用途:在 TypeScript 中约束字面量对象键或字符串形状时,让编译错误显示为可读的英文句子,而不是晦涩的 never 或缺失属性提示。

主要能力:通过递归模板字面量遍历实现谓词(如 IsSnakeCase),再用带零宽空格(U+200B)后缀的模板字面量类型作为“品牌错误类型”(如 InvalidKey<S>),在映射类型中根据谓词结果返回原值或错误类型,从而在错误属性处显示消息。零宽空格使该类型不可被用户输入,避免自动补全污染,并与其他字符串子类型区分。

使用方式:定义字符集与递归谓词,定义错误消息模板类型,在辅助函数的映射类型中按谓词分支返回 T[K] 或 InvalidKey<K>。需配合运行时正则校验,因为 Object.fromEntries、as 断言或 .js 调用可绕过编译期检查。

适用场景:约束 action key、配置键等需符合 snake_case、kebab-case、slug、semver、hex 等模式的字面量键。

限制:arkregex 对 [a-z] 等字符类会回退为 string,需手写递归模板字面量;类型与正则两处规则需保持同步;错误消息建议保持 ASCII,仅 U+200B 为非 ASCII 且不可见。资料未提供安装命令或价格信息。