提问者:小点点

带有Typescript的枚举


我用枚举获得了这段显然很简单的代码。

这些是类型定义:

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

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


共1个答案

匿名用户

枚举获得0,1,2,3这样的值,您需要告诉枚举它们的值。

试试看

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