创建数组结构化数据的接口-Typescript

时间:2019-05-06 11:18:26

标签: typescript

从数据库中,我得到以下数组:

const rawData = [
        [
            426.45,
            10000000
        ],
        [
            426.5,
            66088429300
        ],
        [
            427,
            1000000
        ]
    ]

rawData 包含数据条目的列表。例如rawData [0]是具有两个属性的单个条目- rawData [0] [0] price rawData [0] [1] 音量 。可以在Typescript中为此条目创建一个接口吗?

2 个答案:

答案 0 :(得分:0)

因此,您正在从数据库中获得2D阵列rawData: number[][]。您可以使用类似

的界面
interface Info {
    price: number;
    volume: number;
}

,然后将rawData转换为Info[]

答案 1 :(得分:0)

虽然无法定义描述元组的接口(在Typescript中为固定长度数组),但是可以定义类型。这不会获得命名的元素,但是会阻止您访问元组的范围之外。

type RawData = [number, number];

const rawData: RawData[] = [
    [
        426.45,
        10000000
    ],
    [
        426.5,
        66088429300
    ],
    [
        427,
        1000000
    ]
];

for (const [price, volume] of rawData) {
    // price is number
    // volume is number
}

// Type error: Tuple type [number, number] of length 2 has no element at index 2
for (const [price, volume, extra] of rawData) {
}

然后您可以将数据转换为适当的对象模型,如下所示:

interface Data {
    price: number,
    volume: number
}

const transformedData: Data[] = rawData.map(([price, volume]) => ({ price, volume }));