Правильно ли будет использовать generic type для сокращения описания типов?

Есть объект с описанием цветов для styled-components. Его нужно типизировать. Какой из вариантов по вашему мнению более корректный и читабельный?

export type PageColorTypes = {
  header: {
    background: string;
    shadow: string;
    mainInfo: {
      color: string;
      something: {
        color: string;
        date: string;
      };
    };
    body: {
      color: string;
      link: string;
      something: {
        color: string;
      };
    };
  };
};

или же

export type PageColorTypes<T = string> = {
  header: {
    background: T;
    shadow: T;
    mainInfo: {
      color: T;
      something: {
        color: T;
        date: T;
      };
    };
    body: {
      color: T;
      link: T;
      something: {
        color: T;
      };
    };
  };
};

Полей в объекте может быть больше или меньше, суть generic type здесь скорее для сокращения описания полей. Они всегда будут одним типом.

Такая типизация нужна для цветов светлой/темной темы в styled-components.

Если у вас есть свои варианты, предлагайте, очень интересно мнение со стороны =)


Ответы (0 шт):