如何让TypeScript对不兼容类型的相等比较触发报错?
解决不同类型实例相等比较不报错的问题
TypeScript默认不会对C1.X === C2.X这类不同类实例的严格相等比较抛出错误,因为它默认兼容JavaScript的运行时行为。不过从TypeScript 5.2版本开始,你可以通过启用特定配置来触发这类错误提示。
启用strictEqualityChecks配置
在你的tsconfig.json中添加或修改以下配置项:
{ "compilerOptions": { "strictEqualityChecks": true, // 其他已有配置... } }
启用该配置后,TypeScript会对不兼容类型之间的===和!==比较进行严格检查,针对你提供的代码,会抛出类似如下的错误提示:
此条件将始终返回 'false',因为类型 'C1' 和 'C2' 没有重叠。
这个提示和你期望的“Comparison between incompatible types: C1 and C2”效果一致,能有效拦截这类无意义的跨类型相等比较。
注意事项
- 该配置仅在TypeScript 5.2及以上版本可用,若你的TS版本较低,需要先升级版本。
- 启用后会影响所有不兼容类型的相等比较,比如
string和number的===比较也会触发错误,这有助于提前发现更多潜在的逻辑问题。
内容的提问来源于stack exchange,提问作者Hydroper
相关产品推荐
相关产品推荐

