我有一个枚举定义如下:

export enum taskTypes {
  WORK = 'work',
  SLEEP = 'sleep',
  EXERCISE = 'exercise',
  EAT = 'eat'
}


在我的课程的顶部,我定义currentTask如下:

private currentTask: string;


但是,当我在[WORK, SLEEP].includes(currentTask)中使用枚举时,出现以下错误。

Argument of type 'string' is not assignable to parameter of type 'currentTask'

奇怪的是,当我只是将其更改为使用它不会抱怨的实际字符串时。

['work', 'sleep'].includes(currentTask) ===>这行得通。

那我在这里想念什么?

最佳答案

currentTask是字符串类型,但是WORKSLEEPtaskTypes类型的枚举成员

所以[WORK, SLEEP]taskTypes枚举的数组。这样的数组永远不能包含字符串。

['work', 'sleep']是一个字符串数组,可以包含一个字符串。

如果您将私有成员键入为taskTypes类型,它也将起作用

private currentTask: taskTypes

09-25 21:34