我有一个常量数组:
const array = ['a', 'b'] as const;
现在我想检查该数组中是否有一个值:
let variable = 'a';
if (array.includes(variable))
打字稿产生错误:
TS2345:字符串类型的参数不可分配给“a”类型的参数 | 'b'
哪个是正确的。但我怎样才能避免呢?我找到了解决方案:
if (array.includes(variable as typeof array[number]))
if ((array as unknown as string[]).includes(variable))
但两者都不令我满意,因为他们假装一些不真实的东西。
有人知道更好的解决方案吗?
variable
as const
将推断它的类型为 'a'
,因此与数组兼容array
是一个只读数组,因此您需要将其转换为例如array as readonly string[]