一种用于在重复对象(例如多语言字段)中检测缺失属性的类型定义规则]]

问题描述 投票:1回答:1

想象我有一个类似的类型定义:

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对象中丢失,反之亦然。如果语言对象获得新属性,则应在所有其他语言对象中将其标记为缺少的属性。

想象一下,我有一个类型定义,例如:export type TextMessagesType = {[语言:字符串]:{[占位符:字符串]:字符串; }; };在这种情况下将适用:export const TextMessages:...
typescript types rules type-definition check
1个回答
0
投票
我们可以使用字符串的并集类型来实现这一点,并在键的类型上使用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 }, };

© www.soinside.com 2019 - 2024. All rights reserved.