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

如何在TypeScript中实现多语言字典对象的动态同步?

TypeScript实现多语言字典键同步方案

要实现俄语(ru)和英语(en)字典的键完全同步,避免出现一方有键另一方缺失的情况,可以用以下两种方案解决:

方案1:显式维护共享键类型

先定义所有语言字典的共享键类型,再让两个字典严格遵循这个类型:

// 定义所有共享的语言键集合
type LanguageKeys = 'page.main.hello' | 'page.main.bye';

// 语言字典必须包含所有共享键
type LanguageDict = {
  [Key in LanguageKeys]: string;
};

// 两个字典都需实现LanguageDict,缺失键则报错
const ru: LanguageDict = {
  'page.main.hello': 'Привет!',
  'page.main.bye': 'До свидания!'
};

const en: LanguageDict = {
  'page.main.hello': 'Hi!',
  'page.main.bye': 'Bye!'
};

新增键时,必须先更新LanguageKeys,再给两个字典添加对应键,否则TypeScript会直接提示错误。

方案2:用泛型函数隐式约束键一致性

通过泛型函数强制两个字典的键完全匹配,无需显式定义键类型:

// 泛型函数约束两个字典的键完全一致
function createLanguagePairs<T extends Record<string, string>>(ru: T, en: T) {
  return { ru, en };
}

// 创建同步的语言字典对
const { ru, en } = createLanguagePairs(
  { 'page.main.hello': 'Привет!' },
  { 'page.main.hello': 'Hi!' }
);

// 若其中一个字典新增键而另一个未同步,会触发类型错误
// 例如下方代码会报错:en缺少'page.main.bye'键
const { ru: ru2, en: en2 } = createLanguagePairs(
  {
    'page.main.hello': 'Привет!',
    'page.main.bye': 'До свидания!'
  },
  { 'page.main.hello': 'Hi!' }
);

这种方式更灵活,新增键时只需同步修改两个字典即可,函数会自动校验键的一致性。


内容的提问来源于stack exchange,提问作者Александр Невский

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:25:20