Угловой интерфейс с вложенными массивами

#angular #typescript

#угловой #typescript

Вопрос:

Я новичок в angular и перехожу с Java, поэтому я привык настраивать class в качестве структур данных для своих данных. После некоторых исследований я узнал, что должен использовать интерфейсы, но у меня проблема с выяснением того, как я могу настроить интерфейс с вложенными массивами. Каждый из массивов — это просто пары поле / заголовок для создания таблицы. Объект будет представлять собой их массив. Но у меня есть две таблицы, которые будут иметь заголовок в две строки, и я пытаюсь выяснить, как структурировать интерфейс.

 interface TableHeaderDetails {
    field: string;
    header: string;
    date?: <what goes here>;
}

forecastCol: TableHeaderDetails[];

this.forecastCol = [
    { field: 'cumulativeExpected', header: 'Cumulative Expected ' },
    { field: 'cumulativeReceived', header: 'Cumulative Received' },
    { date : [
        { field: 'forecastYearMonth', header: 'Year - Month' },
            { details: [
                { field: 'expected', header: 'Expected' },
                { field: 'received', header: 'Received' }
            ]}
    ]}
];
  

Комментарии:

1. Какие подробности в вашем this.forecastCol

2. Пожалуйста, добавьте, как бы вы набрали это на Java. Структура типа данных неясна.

Ответ №1:

Вы можете использовать вспомогательный сайт json2ts для преобразования вашего объекта JSON в интерфейс, который выглядит следующим образом,

 declare module namespace {

    export interface Detail {
        field: string;
        header: string;
    }

    export interface Date {
        field: string;
        header: string;
        details: Detail[];
    }

    export interface RootObject {
        field: string;
        header: string;
        date: Date[];
    }

}
  

Комментарии:

1. Спасибо за ссылку, которая очень поможет. Это было ночное упражнение по кодированию, и я понял, что мне нужно создать более многоуровневый объект вместо того, чтобы пытаться использовать базовый объект для всех частей.