Объект объектов массивов в Typescript - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть подобная структура, и мне нужно определить для нее типы / интерфейсы, но я не могу заставить это работать должным образом.

layoutsSet: {
       1: {
        "lg": [
            {
                i: "1",
                x: 0,
                y: 0,
                w: 2,
                h: 2
            },
            {
                i: "2",
                x: 2,
                y: 0,
                w: 2,
                h: 2
            },
            {
                i: "3",
                x: 4,
                y: 0,
                w: 2,
                h: 2
            },
        ]
    }
};

Вот как это выглядит сейчас.Это требует некоторых изменений, потому что при компиляции я получаю ошибки:

TS2322: Тип '{"lg": {i: string;х: число;у: число;w: число;ч: число;} [];} 'нельзя назначить типу' Layouts '.Свойство 'md' отсутствует в типе '{"lg": {i: string;х: число;у: число;w: число;ч: число;} [];} '.

export interface Layout {
    i: string;
    x: number;
    y: number;
    w: number;
    h: number;
}

export enum Breakpoint {
    LG = "lg",
    MD = "md",
    SM = "sm",
    XS = "xs",
    XXS = "xxs"
}

export interface LayoutBreakpoint extends Array<Layout> {}

export type Layouts = {
    [b in Breakpoint]: LayoutBreakpoint
}

export interface LayoutsSet {
    [index: number]: Layouts
}

Что я должен изменить здесь, чтобы это работало?Кто-нибудь может мне помочь?

// РЕДАКТИРОВАТЬ

Самое приятное то, что когда я изменился

export type Layouts = {
    [key: string]: LayoutBreakpoint
}

Это работает сейчас ...

Но почему я не могу определитьиндекс как тип перечисления?

1 Ответ

0 голосов
/ 21 сентября 2018

in interface LayoutsSet вы определяете index как тип number.имена переменных не могут быть типа number.

...