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

如何判断TypeScript类型是否为字面量类型?

如何编写TypeScript工具类型判断是否为字面量类型

可以利用TypeScript的类型拓宽特性实现这个工具类型。字面量类型(如'abc'、false、42)是对应原始类型(string、boolean、number)的子类型,而原始类型无法被字面量类型约束。基于这一点,我们可以通过条件类型区分二者:

type IsLiteral<T> = 
  T extends string ? (string extends T ? false : true) :
  T extends boolean ? (boolean extends T ? false : true) :
  T extends number ? (number extends T ? false : true) :
  false;

验证示例

// 原始类型返回false
type IsStringALiteral = IsLiteral<string> // false
type IsBooleanALiteral = IsLiteral<boolean> // false
type IsNumberALiteral = IsLiteral<number> // false

// 字面量类型返回true
type IsStringLiteralALiteral = IsLiteral<'abc'> // true
type IsBooleanLiteralALiteral = IsLiteral<false> // true
type IsNumberLiteralALiteral = IsLiteral<42> // true

原理说明

  • 当T是原始类型(如string)时,string extends T成立,因此返回false
  • 当T是字面量类型(如'abc')时,string extends 'abc'不成立,因此返回true
  • 对于不属于字符串、布尔、数字范畴的类型,直接返回false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:13:09