带有打字稿的枚举

时间:2020-07-07 14:53:51

标签: javascript reactjs typescript types enums

我的这段代码看起来很简单,带有枚举。

这些是类型定义:

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上的打字稿。

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”’.

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

1 个答案:

答案 0 :(得分:1)

枚举得到的值如0、1、2、3 您需要告诉枚举其值。

尝试

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