如何基于开关大小写为TypeScript中的对象分配类型

时间:2018-10-28 15:46:17

标签: typescript switch-statement typescript-typings typescript-types

我正在使用TypeScript构建React Native应用。

我正在用这样的开关盒编写处理程序:

export const handleMessageData = (dispatch: Dispatch, messageData: FCMMessage): void => {
  const { type, message_data } = messageData;
  const data = camelizeKeys(JSON.parse(message_data));
    switch (type) {
        case conditionOne:
          data.consumer = data.consumer.uuid;
          setHouses({ entities: { houses: { [data.uuid]: data } } });
        // ... more cases
        default:
          // ... do stuff
      }
    };

在每种情况下,我都知道data是哪种类型。我该如何告诉打字稿呢?

伪代码:

case conditionOne:
  data: MyType;
  data.consumer = data.consumer.uuid;

1 个答案:

答案 0 :(得分:1)

您的switch周围的更多代码会有所帮助(例如typedata来自何处,它们看起来像什么?)。通常,您可以使用标记的联合,对象类型,记录类型或多种其他方式来声明两种类型之间的关系。