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

如何基于指定子串筛选TypeScript联合类型成员?

从TypeScript联合类型中筛选包含指定子串的成员

可以通过TypeScript的条件类型结合模板字符串类型实现这个需求,具体代码如下:

type AllTypes = "hello.world"|"love.typescript"|"learn.typescript"|"love.stackoverflow"

// 定义通用筛选类型,匹配包含指定子串的字符串类型
type FilterIncludes<T extends string, Sub extends string> = T extends `${infer _Start}${Sub}${infer _End}` ? T : never;

// 针对AllTypes筛选包含"typescript"的成员
type TypescriptTypes = FilterIncludes<AllTypes, "typescript">;
// 最终TypescriptTypes的类型为:"love.typescript" | "learn.typescript"

原理说明

  • 模板字符串类型${infer _Start}${Sub}${infer _End}会匹配所有包含子串Sub的字符串类型,infer关键字用于捕获子串前后的任意内容(无需使用时可用下划线命名占位)
  • 条件类型会对联合类型的每个成员逐一判断,匹配成功的成员被保留,失败的返回never
  • TypeScript会自动从联合类型中剔除never类型,最终得到仅包含目标子串的成员集合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:15:37