如何测试声明为 const 的数组中是否包含某个值

问题描述 投票:0回答:1

我有一个常量数组:

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))

但两者都不令我满意,因为他们假装一些不真实的东西。

有人知道更好的解决方案吗?

typescript
1个回答
0
投票
  • 输入
    variable
    as const
    将推断它的类型为
    'a'
    ,因此与数组兼容
  • 您不需要 15 次转换,
    array
    是一个只读数组,因此您需要将其转换为例如
    array as readonly string[]
© www.soinside.com 2019 - 2024. All rights reserved.