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

如何在TypeScript中判断字符串是否属于指定联合类型

TypeScript判断字符串是否属于指定联合类型的实现方法

TypeScript的类型仅存在于编译阶段,运行时会被完全擦除,因此无法直接在运行时判断值是否属于某个TS类型。你可以通过「先定义运行时常量集合、再从集合推导类型」的方式实现需求,具体实现如下:

实现步骤

  • 第一步:定义运行时可用的合法取值数组,同时从数组推导对应TS类型,避免重复写两遍取值逻辑
// 运行时真实存在的常量数组,用as const锁定数组元素为字面量类型
const FRUITS = ['Apple', 'Banana', 'Orange'] as const;
// 从数组推导得到等价的联合类型
type Fruit = typeof FRUITS[number];
  • 第二步:封装类型守卫函数,同时完成运行时校验和TS类型收窄
function isFruit(value: unknown): value is Fruit {
  // 先判断是字符串类型,再判断是否在合法取值数组内
  return typeof value === 'string' && FRUITS.includes(value as Fruit);
}
  • 第三步:在业务逻辑中直接调用类型守卫函数即可
const myFruit = 'Banana';

if (isFruit(myFruit)) {
  // 进入此分支时TS会自动将myFruit的类型收窄为Fruit
  console.log('myFruit is a fruit!');
}

补充说明

如果你不想额外封装类型守卫,也可以直接在判断条件里写FRUITS.includes(myFruit as Fruit),但封装成守卫函数复用性更高,也不用每次都写类型断言。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:39:03