@asmodeus13th

Как написать интерфейс для массива с объектами?

У меня есть переменная activatedPackages, в которой лежит массив, в котором лежат объекты, в которых лежат пары ключ-значение (обязательные и необязательные поля), где значение - всегда строка:
const activatedPackages = [
  {
    // обязательные поля
    id: 123, // число
    activated: true, // булевое
    name: '30 days', // строка
    // необязательные поля (несколько)
    type: 'blablabla' // any
  },
  {
    // обязательные поля
    id: 123, // число
    activated: true, // булевое
    name: '30 days', // строка
    // необязательные поля
    type: 'blablabla' // any
  },
];

Количество объектов внутри массива может быть разное. Нужно написать интерфейс для переменной activatedPackages.

P.S. Знаю, много хочу, но никак не могу придумать как написать такой интерфейс. Если нужно будет делать несколько интерфесов, то ок. Главное, чтобы работало)
  • Вопрос задан
  • 4158 просмотров
Решения вопроса 2
@pekc83
Чем строже типы в тайпскрипте, тем меньше проблем у вас возникнет в рантайме.
interface Package {
  id: number;
  activated: boolean;
  name: string;
}

interface ActivatedPackage extends Package {
  activated: true;
}

interface OptionalProps {
  foo: string;
  bar: number
}

const activatedPackages: Array<ActivatedPackage & Partial<OptionalProps>> = [ ... ];
Ответ написан
Комментировать
w3bsmes
@w3bsmes
Куратор тега «Глупые вопросы»
interface IActivatedPackages {
    id: number;
    activated: boolean;
    name: string;
    // необязательные поля (несколько)
    n1?: string;
    n2?: string;
    n3?: string;
    n4?: string;
    // warn
    type: any;
}


Эм.. на?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы