带有打字稿的枚举

Posted

技术标签:

【中文标题】带有打字稿的枚举【英文标题】:Enums with Typescript 【发布时间】:2020-10-27 21:00:42 【问题描述】:

我有这个带有枚举的明显简单的代码部分。

这些是类型定义:

export enum AcquisitionStatus 
  IDLE, RUNNING, DONE, ERROR,


export type State = 
  acquisitionCycleStatus: 
    progress: number
    status: keyof typeof AcquisitionStatus
  

这是我使用它们的功能:

const initialState = 
  acquisitionCycleStatus: 
    progress: 0,
    status: AcquisitionStatus.IDLE,
  ,


const StoreContext = createContext<[State, Dispatch<Actions>]>([
  initialState,
  () => null,
])

这是在initialState 上报告 Typescript 的错误。

Type ‘ acquisitionCycleStatus:  progress: number; status: AcquisitionStatus; ; ’ is not assignable to type ‘State’.
  The types of ‘acquisitionCycleStatus.status’ are incompatible between these types.
    Type ‘AcquisitionStatus’ is not assignable to type ‘“IDLE” | “RUNNING” | “DONE” | “ERROR”’.

我做错了什么?有人可以帮助我吗?谢谢。

【问题讨论】:

可能是status: keyof typeof AcquisitionStatus -> status: keyof AcquisitionStatus ? 没有键的枚举获得数值。如果你需要一直使用这个枚举,你可以简单地做status: AcquisitionStatus 【参考方案1】:

枚举的值类似于 0,1,2,3 你需要告诉枚举他们的值。

试试

export enum AcquisitionStatus 
  IDLE = 'IDLE',
  RUNNING = 'RUNNING',
  DONE = 'DONE',
  ERROR = 'ERROR',

【讨论】:

以上是关于带有打字稿的枚举的主要内容,如果未能解决你的问题,请参考以下文章

带有打字稿的 Angular 5 websocket 示例

带有打字稿的MongoDB聚合

如何使用带有打字稿的“调试”模块

在自定义输入元素上使用带有打字稿的 useRef

带有打字稿的嵌套角度指令

带有打字稿的 mapDispatchToProps 很困难