首页 > 解决方案 > Typescript 联合类型的 Swift 等价物是什么?

问题描述

我想在 Swift 上创建类似这样的东西,用于 Alamofire json 解析

interface Question {
  value: string;
  data: [string]
}

interface Advice {
  type: string;
  data: { value: string }
}

interface CurrentItem {
  type: string;
  data: Advice | Question | string
}

标签: swifttypescript

解决方案


使用带有关联值的枚举来表示不同的可能性:

enum Data {
  case advice (Advice)
  case question (Question)
  case string (String)
}

然后,您可以将 CurrentItem 创建为 Struct

struct CurrentItem {
  type: String
  data: Data
}

如果您从 JSON 解码,您需要使结构符合 Decodable 并编写一个自定义init(from decoder: Decoder)方法来查看提供的数据,然后创建 Data 枚举的适当实例。


推荐阅读