如何根据 switch case 为 TypeScript 中的对象分配类型
Posted
技术标签:
【中文标题】如何根据 switch case 为 TypeScript 中的对象分配类型【英文标题】:How to assign a type to an object in TypeScript based on switch case 【发布时间】:2019-04-01 15:56:42 【问题描述】:我正在使用 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】:您的 switch
周围的更多代码会有所帮助(例如,type
和 data
来自哪里,它们是什么样的?)。通常,您可以使用标记联合、对象类型、记录类型或许多其他方式来声明两种类型之间的关系。
【讨论】:
我在 switch 语句周围添加了额外的代码。感谢您的帮助! 太棒了!如果您正确键入FCMMessage
,这应该可以工作。您要在此处使用的功能是有区别的工会(有时人们也称其为“标记工会”)。关键是将FCMMessage
键入为可能消息的联合,其中该联合的每个成员都有一个带有字符串文字类型的type
属性。在此处查看示例:typescriptlang.org/docs/handbook/…以上是关于如何根据 switch case 为 TypeScript 中的对象分配类型的主要内容,如果未能解决你的问题,请参考以下文章
switch结构case语句后的多个语句必须放在花括号中。 这句话对吗?为啥?