单独检测类型字面量正常,组合后布尔类型检测出现误判
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
相关产品推荐
相关产品推荐

