想象我有一个类似的类型定义:
export type TextMessagesType = { [language: string]: { [placeholder: string]: string; }; };
在这种情况下适合:
export const TextMessages: TextMessagesType = { en: { noText: 'No Texts available!', }, };
现在,如果要添加新语言和新属性,例如:
export const TextMessages: TextMessagesType = { en: { noText: 'No Texts available!', welcome: 'You are welcome' }, de: { noText: 'Keine weiteren Texte vorhanden!', // welcome missing }, };
我想确保
de
对象具有与en
对象完全相同的属性。 IDE应该识别由于类型定义而导致的缺少的属性(例如welcome
)。
我可以借助打字稿类型定义规则来做到这一点吗?如果是,如何?
编辑:
对不起,我想缺少一个重要信息:识别机制应在每个对象中<>。想象一下de
对象具有属性xy
,并且在en
对象中丢失,反之亦然。如果语言对象获得新属性,则应在所有其他语言对象中将其标记为缺少的属性。
in
关键字:type RequiredLanguageFields = 'welcome'
| 'noText';
type TextMessagesType = {
[language: string]: {
[placeholder in RequiredLanguageFields]: string;
};
};
const TextMessages: TextMessagesType = {
en: {
noText: 'No Texts available!',
welcome: 'You are welcome'
},
de: { // type error on this line
noText: 'Keine weiteren Texte vorhanden!',
// welcome missing
},
};