SuperAPI AI 工具集

imprecise-over-inaccurate

编程与开发

查看项目

更新于 10-16 09:31

技能介绍

用途:这是一条 TypeScript 类型设计原则,针对类型变得过于复杂、精确度导致误报、准确性不确定的场景。核心主张是:一个准确但不精确的类型,优于一个精确但错误的类型。过度精确可能造成误报(拒绝合法代码)或漏报(接受非法代码),两者都会削弱对类型系统的信任。

主要能力:给出检测“过度精确类型”的方法与判别标准,例如用有限联合精确描述 CSS 颜色或 JSON Schema 时,会拒绝 rgb(255,255,255)、rgba(0, 0, 0, 0.5) 或 type: ['string','null'] 等合法用法。提供替代方案,如放宽为 string、使用 type: string | string[] 并加索引签名,或采用带逃生口的部分精确写法(如 'red' | 'blue' | (string & {})),兼顾自动补全与灵活性。

使用方式:判断精确度是否值得——当完全掌控输入(内部类型)、域有明确定义(有限已知值)、错误可在开发期尽早发现且类型足够简单可验证时,可以使用精确类型(如 HttpMethod 为有限字符串联合)。当涉及外部数据(API、用户输入)、域复杂(CSS、HTML、正则)或类型开始拒绝合法用例时,应降低精确度。建议从宽泛类型起步,按需渐进细化。区分误报与漏报:误报应放宽类型,漏报应在运行时校验。

适用场景与限制:适用于 TypeScript 类型设计与复杂泛型调试。限制在于它是一条经验原则而非可执行工具,需要结合具体代码判断;文档未提供安装命令、版本要求或平台信息。