Typescript中数组对象的对象

时间:2018-09-21 11:45:48

标签: typescript types typescript-definitions

我具有这样的结构,并且需要为此定义类型/接口,但是我无法使其正常工作。

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:字符串; x:数字; y:数字; w:数字; h:数字; } []; }”不可分配给“布局”类型。   类型'{“ lg”中缺少属性'md':{i:string; x:数字; y:数字; w:数字; h:数字; } []; }'。

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 :(得分:0)

interface LayoutsSet中,您将index定义为number类型。变量名称不能为number类型。