如何写下面的 typescript 类型?

type ActionType = "one" | "two" | "three"
// 第一种写法
interface Action {
  type: ActionType
  num?: number
}
// 第二种写法
type Action2 = {
  type: 'one'
} |  {
  type: 'two'
} |  {
  type: 'three'
  num: number
}

Action 类型有一个 type 字段,但是只有在类型为 three 时才需要 num 字段。第一种写法比较简单,但是表达不准确。而第二种表达准确但是写起来繁琐。
实际使用中 type 类型有十多种,大部分结构是一样的,只有一两个类型有特殊的结构。有什么写法写起来不用太繁琐但又表达准确?

阅读 2.9k
1 个回答
type Action = {
  type: 'one' | 'two' | 'others'
} | {
  type: 'three',
  num: number
} | {
  type: 'four',
  str: string
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏