代码之家  ›  专栏  ›  技术社区  ›  user1283776

如何从未知数据创建一个对象,该对象将是几种可能的类型之一?

  •  0
  • user1283776  · 技术社区  · 7 年前

    我正在从服务器上获取数据。

    const response = await request() as RecordingGetChannelData
    

    export type RecordingGetChannelData = (
        RecordingGetChannelDataAnalogValues | 
        RecordingGetChannelDataGpiAndRxChannels | 
        RecordingGetChannelDataValueObject
    );
    export type RecordingGetChannelDataAnalogValues = {
        data_type: 'analog';
        timestamp: number;
        interval: number;
        values: number[];
        value: string;
    };
    export type RecordingGetChannelDataGpiAndRxChannels = {
        data_type: 'log';
        values: number[];
        value: string;
    };
    export type RecordingGetChannelDataValueObject = {
        timestamp: number;
        value: string;
    };
    

    从这个 response channelData 那是三种类型之一

    export type ChannelData = (
        ChannelDataAnalogValues | 
        ChannelDataGpiAndRxChannels | 
        ChannelDataValueObject
    );
    export type ChannelDataAnalogValues = {
        data_type: 'analog';
        timestamp: number;
        interval: number;
        values: number[];
        value: string;
    };
    export type ChannelDataGpiAndRxChannels = {
        data_type: 'log';
        values: number[];
        value: string;
    };
    export type ChannelDataValueObject = {
        timestamp: number;
        value: string;
    };
    

    我该怎么做?

    这是我最好的尝试,但不起作用:

    let channelData = {};
    if (response['data_type']) channelData.dataType = response['data_type'];
    if (response['timestamp']) channelData.timestamp = response['timestamp'];
    if (response['interval']) channelData.interval = response['interval'];
    if (response['values']) channelData.values = response['values'];
    if (response['value']) channelData.value = response['value'];
    

    0 回复  |  直到 7 年前
    推荐文章