当前位置: 首页 > 知识库问答 >
问题:

前端 - 如何写下面的 typescript 类型?

况经纬
2024-09-01
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 类型有十多种,大部分结构是一样的,只有一两个类型有特殊的结构。有什么写法写起来不用太繁琐但又表达准确?

共有1个答案

谢阳成
2024-09-01
type Action = {
  type: 'one' | 'two' | 'others'
} | {
  type: 'three',
  num: number
} | {
  type: 'four',
  str: string
}
 类似资料:
  • 在写单元测试中,我想抽象一个通用的函数,避免重复书写。函数的定义如下: 但是我不知道如果建立 fn 函数参数的类型和 source 类型之间的联系。 请问要怎么写才可以让 source 的类型等于 fn 参数类型的数组?

  • 如上面代码所示,需要指定 arr 参数的数据类型,这个数据数据类型是 p1 或者 p2 参数的 key.请问这个改如何指定呢。

  • 想实现value是string那么val就是string,value是string[]那么val就是string[]

  • 看到一个interface的声明,非常复杂: 1、这个很难看懂,请问一下,应该如何学习这个定义呢? 是否可以拆分一点一点地学到它的含义? 2、需要带着什么样的思路才能去看懂,从想要定义它的目的去阅读吗?

  • LineSeries['areaStyle']的类型是AreaStyle | undefined 报错:类型“AreaStyle | undefined”上不存在属性“color”。 如何通过 LineSeries使用color属性的类型呢?

  • 我在玩TypeScript中的条件类型。我想用条件返回类型编写一个函数。如果函数被传递一个字符串,它将返回一个名称,否则它将返回一个Id。 我在返回语句中得到以下错误: 我错过了什么?Thnx! 编辑:直接摘自Anders Hejlsberg在Build 2018上的演讲:https://youtu.be/hDACN-BGvI8?t=2241 他甚至说“我们不再需要写函数重载了…” 如果我将代码更