Создание интерфейса с массивом переменной длины, содержащий объекты в TypeScript/Angular4

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

Я пишу это в Angular4 и TypeScript. Массивы должны иметь переменную длину с минимумом 1 члена

Я написал этот псевдо-код, чтобы показать вам, что я имею в виду:

export class MyHomeBrewery {
  taps: Array<any> = [{
    id: number;
    name: string;
    type: string;
    quantity: number;
  }][...];
  barrels: Array<any> {
    id: number;
    name: string;
    width: number;
    height: number;
    quantity: number;
 }][...];

Я просмотрел документацию по TypeScript и Angular и выполнил несколько поисков, и я не могу найти правильный синтаксис для этого. Кто-нибудь знает?

Ответ 1

Вы должны использовать их как интерфейсы, как показано ниже

export interface MyHomeBrewery {
    taps: Array<Taps>;    
    barrels: Array<Barrels>;
}

export interface Taps {

    id: number;
    name: string;
    type: string;
    quantity: number;
}

export interface Barrels {
    id : number;
    name: string;
    width: number;
    height: number;
    quantity: number;
}

Ответ 2

Тестирование этого интерфейса с машинописью детской площадкой: https://www.typescriptlang.org/play/#code/KYDwDg9gTgLgBASwHY2FAZgQwMbDgWQE8AJCAW2ACEpgB3NQuAbwFgAoOTuJTCgLjgBnGFGQBzADTsucGJjCCBAQShRMhADwAVeYIB8AbhnSuAI0yrgAG0VwVazZQs0bh9gF927UJFiIUaFi4cDoKzF4cXAgAJgJIAK5kpmgGJpw8-EIi4qmRnDCEYMACwqJIYrkyAI7xmCgIBXGJyVC5nmze4NDwyKgYOHhOljbheYjRcE1JKWncvMVZZRWztDEwABZTLZVc68AIYuswWzNjNXUwDYQnrR4RAG4WcBCmAFYCRKQU1HQMcAC8oxkGQWACJUMJQVIxnIFAIANqsMYyGICACM0JkwPmAlBpgOoShsxkBSKuNoEAgRORXHO9UacAALIzZu4ALqYszOay2RHEqKxOAAJk5WLmmQA5KVxBLRVjVtENgIAOxymR7A5HAQAZm1atptXp1zgAFYTay2R4gA