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中是不同的类型。“字符串枚举”是枚举的一种特殊情况,它可以很好地“序列化”(例如日志),但仍然与字符串不同。