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

如何用正则表达式定义更通用的TypeScript本地化名称接口类型?

用TypeScript模板字符串类型实现通用OsmNames类型

当然可以,不需要正则表达式,TypeScript 4.1+ 支持的模板字符串类型就能完美解决这个问题,直接定义出符合name和name:xx格式的通用类型:

方案1:限制允许的语言代码

如果需要明确限定支持的语言(比如只允许de、pl、en这些),可以先定义语言代码集合,再生成对应字段:

// 定义允许的语言代码,按需扩展
type LanguageCode = 'de' | 'pl' | 'en' | 'fr';

export type OsmNames = {
  // 基础名称字段
  name: string;
} & {
  // 动态生成所有name:xx格式的本地化字段
  [K in `name:${LanguageCode}`]: string;
};

方案2:允许任意语言代码

如果不需要限制语言,支持任意name:xx格式的字段,直接用string匹配后缀即可:

export type OsmNames = {
  name: string;
} & {
  [K in `name:${string}`]: string;
};

说明

  • 模板字符串类型name:${...}会自动匹配所有符合该格式的键,TypeScript会在类型检查时识别这些字段。
  • 交叉类型&用来把基础的name字段和动态生成的本地化字段合并,完全替代原来手动写大量重复字段的接口。

内容的提问来源于stack exchange,提问作者BuZZ-dEE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:32:10