@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',
            },
        ],
    };
  • Вопрос задан
  • 61 просмотр
Решения вопроса 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[],
};


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

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

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