我有一个翻译对象,它可以拥有与字符串可能被翻译成的所有语言相对应的键,以及作为翻译字符串的值,如下所示:
const trans = {
en: "Hello, how is it going?",
de: "Hallo, wie gehts?",
da: "Hej, hvordan går det?"
}
我目前正在像这样输入对象:
type TransType = {
[key: string]: string;
}
但我也有其他地方使用的联合类型来控制可以实现哪些语言:
type Languages = "en" | "de" | "da";
如何将这两者结合起来,并根据 Languages 联合类型控制可以在 trans 对象中使用哪些键?
答案 0 :(得分:1)
您可以为此使用映射类型 (docs):
type Languages = "en" | "de" | "da"
type TransType = {
[key in Languages]: string
}
// infers TransType = { en: string, de: string, da: string }
const trans: TransType = {
en: "Hello, how is it going?",
de: "Hallo, wie gehts?",
da: "Hej, hvordan går det?",
nl: "Onbekende taal" // Error, as 'nl' is not in Languages
}
或者,正如 rshepp 提到的,您可以使用 Record
实用程序类型 (docs, src),它将定义相同的映射类型:
type TransType = Record<Languages, string>