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

如何用TypeScript定义符合T恤尺码规范的字符串字面量类型?

实现TypeScript T恤尺码类型约束

要实现支持无穷多种合法格式的TShirt类型,可以利用TypeScript的递归模板字符串类型来定义规则,具体实现如下:

// 基础单字母尺码:s、m、l
type SingleSize = 's' | 'm' | 'l';

// 递归定义加小码:xs、xxs、xxxs...(任意数量x前缀+s)
type ExtraSmall = `x${ExtraSmall | 's'}`;

// 递归定义加大码:xl、xxl、xxxl...(任意数量x前缀+l)
type ExtraLarge = `x${ExtraLarge | 'l'}`;

// 合并所有合法尺码类型
type TShirt = SingleSize | ExtraSmall | ExtraLarge;

验证效果

按照示例测试:

const validXS: TShirt = 'xs'; // ✅ 合法
const validXXXXXS: TShirt = 'xxxxxxxxxxs'; // ✅ 合法(10个x+s)
const validXXXXL: TShirt = 'xxxxxxxxxxxxl'; // ✅ 合法(12个x+l)
const invalid: TShirt = 'xsz'; // ❌ 类型错误(后缀不是s/l)

原理说明

  • SingleSize直接覆盖单个字母的基础尺码;
  • ExtraSmall通过递归模板字符串,允许在s前添加任意数量的x,生成从xs开始的所有加小码;
  • ExtraLarge同理,允许在l前添加任意数量的x,生成从xl开始的所有加大码;
  • 三者合并后,TShirt类型会自动校验字符串是否符合[x*]s、m、[x*]l的格式,且支持无穷多的x前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:43:09