Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Typescript枚举键入错误(类型为';字符串';的参数不可分配给类型为的参数)_Javascript_Typescript - Fatal编程技术网

Javascript Typescript枚举键入错误(类型为';字符串';的参数不可分配给类型为的参数)

Javascript Typescript枚举键入错误(类型为';字符串';的参数不可分配给类型为的参数),javascript,typescript,Javascript,Typescript,我有一个枚举定义如下: export enum taskTypes { WORK = 'work', SLEEP = 'sleep', EXERCISE = 'exercise', EAT = 'eat' } private currentTask: string; 在我的类的顶部,我定义了currentTask,如下所示: export enum taskTypes { WORK = 'work', SLEEP = 'sleep', EXERCISE = 'ex

我有一个枚举定义如下:

export enum taskTypes {
  WORK = 'work',
  SLEEP = 'sleep',
  EXERCISE = 'exercise',
  EAT = 'eat'
}
private currentTask: string;
在我的类的顶部,我定义了
currentTask
,如下所示:

export enum taskTypes {
  WORK = 'work',
  SLEEP = 'sleep',
  EXERCISE = 'exercise',
  EAT = 'eat'
}
private currentTask: string;
但是,当我在
[WORK,SLEEP].includes(currentTask)
中使用枚举时,会出现以下错误

类型为“string”的参数不能分配给类型为“currentTask”的参数。

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

['work','sleep'].包括(currentTask)
=>这是有效的


那么我在这里遗漏了什么呢?

currentTask
是string类型,但是
WORK
SLEEP
TaskType
类型的枚举成员

因此,
[WORK,SLEEP]
是一个
任务类型
枚举数组。这样的数组永远不能包含字符串

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

如果您将私有memeber键入类型为
taskTypes
,它也会工作

private currentTask: taskTypes

啊,我明白了,不过有一个问题,type
taskTypes
是一个枚举,它的类型是string,对吗?@honeybacker_execute no,枚举和字符串在TypeScript中是不同的类型。“字符串枚举”是枚举的一种特殊情况,它可以很好地“序列化”(例如日志),但仍然与字符串不同。