You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单独检测类型字面量正常,组合后布尔类型检测出现误判

TypeScript字面量类型检测工具问题

现有类型检测工具

我有一组用于检测类型<T>是字面量类型还是宽类型的工具:

  • IsStringLiteral<T extends string>
  • IsNumericLiteral<T extends number>
  • IsBooleanLiteral<T extends boolean>

统一工具IsLiteral的定义

我将上述工具封装为统一的IsLiteral工具,定义如下:

export type IsLiteral<T extends string | number | boolean> = T extends string
  ? IsStringLiteral<T>
  : T extends boolean
    ? IsBooleanLiteral<T>
    : T extends number
      ? IsNumericLiteral<T>
      : never;

问题现象

我对所有单独工具和IsLiteral都做了类型测试,大部分场景结果正常,但**IsLiteral<boolean>会出现误报**,而单独调用IsBooleanLiteral<boolean>却能得到正确结果。

测试失败截图

测试失败截图

内容的提问来源于stack exchange,提问作者ken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:35:33