javascript - 打字稿:创建确保值在数组内的类型
问题描述
我有对象
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”自动
解决方案
推荐阅读
- python - 我正在尝试获取一个 for 循环来比较 2 个值相应地对其进行编辑,但它不起作用
- c++ - gRPC C++ 异步客户端完成队列耗尽
- kubernetes - 如何在另一个目录中实现 LabelTransformer?
- javascript - matchAll() 没有按记录运行:正则表达式测试站点说正则表达式有效,nodejs 说它未定义,为什么?
- python - 如何从值列表中找到中位数
- java - java OutOfMemoryException 创建新线程时,仅当活动线程数为 500 或以上时
- flutter - 找不到 com.google.android.gms:play-src.services-maps:17.0.0
- spring - axios 发布成功,但在 spring-controller 中没有触发任何方法
- visual-studio-code - Mac 上的 VSCode 和 Oh My Zsh - 如何在终端打开时自动运行命令?
- javascript - 为什么 Node.js 中的 util.inherits() 方法使用 Object.setPrototypeOf()?