как правильно использовать includes с enum в TS
есть такой код:
enum EEnum {
A = 'A'
}
type EType = keyof typeof EEnum
let value: EType = EEnum.A
if (value === EEnum.A) {
// norm
}
if ([EEnum.A].includes(value)) {
// Argument of type '"A"' is not assignable to parameter of type 'EEnum'.(2345)
}
Сравнение через '===' TS пропускает, но через includes - нет
Подскажите, как правильно использовать includes с enum`ами
Ответы (1 шт):
Автор решения: Pavel Grishaev
→ Ссылка
Можно либо указать тип EEnum для value (а не тип ключей string):
enum EEnum {
A = 'A'
}
let value: EEnum = EEnum.A
if (value === EEnum.A) {
// norm
}
if ( [EEnum.A].includes(value)) {
// Argument of type '"A"' is not assignable to parameter of type 'EEnum'.(2345)
}
, либо указать, что у вас массив строк:
enum EEnum {
A = 'A'
}
type EType = keyof typeof EEnum
let value: EType = EEnum.A
if (value === EEnum.A) {
// norm
}
let arr: string[] = [EEnum.A]
if ( arr.includes(value)) {
// Argument of type '"A"' is not assignable to parameter of type 'EEnum'.(2345)
}