我有一个枚举定义如下:
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
是字符串类型,但是WORK
和SLEEP
是taskTypes
类型的枚举成员
所以[WORK, SLEEP]
是taskTypes
枚举的数组。这样的数组永远不能包含字符串。['work', 'sleep']
是一个字符串数组,可以包含一个字符串。
如果您将私有成员键入为taskTypes
类型,它也将起作用
private currentTask: taskTypes