首页 > 解决方案 > 打字稿:创建确保值在数组内的类型

问题描述

我有对象

const AllTranslations = {
  ACCEPT: {
    en: "Accept this",
    de: "Akzeptieren"
  },
  UNKNOWN_ERROR: {
    en: "Unexpected error occurred"
  }
};

我有这种类型 export type TransKey = keyof typeof AllTranslations;

我有接收 TransKey 类型道具的翻译函数,如果给定的字符串不作为 AllTranslations 中的键存在,我希望它抛出错误。这适用于给定的代码。

现在,如果“en”或“de”丢失,我还希望 typescript 抛出错误,如果我将 AllTranslations 的类型设置为 Record<string, {en: string, de: string}> 可以做到这一点。但问题是 TransKey 类型现在实际上只是字符串,我可以将任何字符串传递给翻译函数,它不会抱怨......

任何解决方案如何同时拥有?如果 AllTranslations 中没有给定键(例如 ACCEPT),则 translate 函数会抱怨,如果 AllTranslations 中缺少 en 或 de , ts 也会抱怨?

我可以使用 object.keys 获取键数组,例如 ["ACCEPT", "UNKNOWN,ERROR"],但不知道是否可以创建看起来像“ACCEPT”的类型 | “UNKNOWN_ERROR”自动

标签: javascriptreactjstypescript

解决方案


推荐阅读