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

TypeScript:如何声明禁止空格的模板字面量类型?

解决TypeScript模板字面量类型禁止空格的问题

你当前的Duration类型允许数字和单位间存在空格,是因为TypeScript中${number}在模板字面量里的匹配逻辑比较宽松——它会接受任何能被解析为数字的字符串片段,包括带有空格的部分。要实现严格禁止中间空格的需求,需要定义纯数字字符串类型来替代直接使用number。

解决方案代码

// 定义单个数字字符类型
type Digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
// 递归定义任意长度的纯数字字符串(至少1位数字)
type NumberString = Digit | `${Digit}${NumberString}`;
// 用纯数字字符串拼接单位,确保无空格
type Duration = `${NumberString}${'ms' | 's'}`;

let a: Duration = "2000 ms"; // 编译错误,符合预期
let b: Duration = "2s"; // 合法
let c: Duration = "2000ms"; // 合法

原理说明

  • Digit限定了单个字符必须是0-9的数字;
  • NumberString通过递归组合,确保整个字符串部分是纯数字(无空格、字母等其他字符);
  • 最终的Duration类型要求数字部分和单位部分直接拼接,中间不能插入任何空格或其他字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:10:36