在类型别名中声明未知数量的列表

时间:2016-07-07 04:23:15

标签: typescript

假设我有一个返回列表的函数,该列表包含可变数量的列表,每个列表首先包含可变数量的列表,然后将单个对象作为列表的最后一个成员。

以下是一些输出示例:

output1 = [
    [
        [1, 2, 3],
        { x: 1, y: 2 }
    ],
    [
        [4, 5, 6],
        { x: 3, y: 4 }
    ],
    [
        [7, 8, 9],
        { x: 5, y: 6 }
    ]
];

output2 = [
    [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9],
        // however many more lists there are
        { x: 1, y: 2 }
    ],
    [
        ['a', 'b', 'c'],
        ['d', 'e', 'f'],
        ['g', 'h', 'i'],
        // however many more lists there are
        { x: 3, y: 4 }
    ],
    // however many more lists there are
];

列表的内容可以是any类型,但每个对象都有xy属性,每个属性都有number类型。

如何创建一个准确且具体地显示此类型的别名?

现在,这就是我创造的:

type Output = [
    [
        any[], // this is what I need help with
        { x: number, y: number }
    ][]
]

1 个答案:

答案 0 :(得分:0)

您的结构设计不合理,为什么使用数组作为顶部结构而不是对象? 您是否坚持使用该结构(即:它是第三方库的结果,或者是json结果),还是可以更改它?

如果你可以改变它,那么我建议你这样做,因为你将能够有更多的控制权。

type Output = Array<Array<number[] | { x: number, y: number }>>;

let output1: Output = [
    [
        [1, 2, 3],
        { x: 1, y: 2 }
    ],
    [
        [4, 5, 6],
        { x: 3, y: 4 }
    ],
    [
        [7, 8, 9],
        { x: 5, y: 6 }
    ]
];