Задать вопрос
@sonorasatra
Frontend-developer

Как упростить написание интерфейса в typescript?

Я написал интерфейс на ts для ячейки таблицы, далее мне надо создать объект, состоящий из массивов этих ячеек для разделения данных по категориям, но для этого мне пришлось создать дополнительный интерфейс этого объекта. Можно ли это как то избежать?

interface Cell {
        name: string;
        isForAll: boolean;
        value: number | string;
        types?: any;
    }

    interface Cells {
        client_price: Cell[];
        selfcost: Cell[];
    }

    let cells: Cells = {
        client_price: [
            {
                name: 'Цена клиента за 1 ед переплета',
                isForAll: true,
                value: order.finance.client_price.binding_unit,
            },
            {
                name: 'Сумма закупа не выше (тенге)',
                isForAll: false,
                types: order.finance.client_price.types,
                value: 'client_price_per_unit',
            },
        ],
        selfcost: [
            {
                name: 'Цена клиента за 1 ед переплета',
                isForAll: true,
                value: order.finance.client_price.binding_unit,
            },
            {
                name: 'Сумма закупа не выше (тенге)',
                isForAll: false,
                types: order.finance.client_price.types,
                value: 'client_price_per_unit',
            },
        ],
    };
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Специализация Frontend-разработчик
    9 месяцев
    Далее
  • Skillbox
    Курс по TypeScript
    3 месяца
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
victormayorov
@victormayorov
Frontend разработчик
Без интерфейса тоже самое можно написать и на уровне самой переменной.
Например:
let cells: { client_price: Cell[], selfcost: Cell[] } =  {
   client_price: [],
   selfcost: [],
};

Иначе никак. В данном случае я бы предпочел написание отдельного интерфейса.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@markelov69
interface Cell {
    name: string;
    isForAll: boolean;
    value: number | string;
    types?: any;
}

let cells = {
    client_price: [
        {
            name: 'Цена клиента за 1 ед переплета',
            isForAll: true,
            value: 1,
        },
        {
            name: 'Сумма закупа не выше (тенге)',
            isForAll: false,
            types: 1,
            value: 'client_price_per_unit',
        },
    ] as Cell[],
    selfcost: [
        {
            name: 'Цена клиента за 1 ед переплета',
            isForAll: true,
            value: 1,
        },
        {
            name: 'Сумма закупа не выше (тенге)',
            isForAll: false,
            types: 1,
            value: 'client_price_per_unit',
        },
    ] as Cell[],
};


Есть ещё такой вариант
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы