首页 > 解决方案 > 如何根据 switch case 为 TypeScript 中的对象分配类型

问题描述

我正在使用 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;

标签: typescriptswitch-statementtypescript-typingstypescript-types

解决方案


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


推荐阅读