使用以下代码,我们生成两个数组:
const PROVIDERS: {
PROVIDER_1: 'PROVIDER_1';
PROVIDER_2: 'PROVIDER_2';
PROVIDER_3: 'PROVIDER_3';
} = {
PROVIDER_1: 'PROVIDER_1',
PROVIDER_2: 'PROVIDER_2',
PROVIDER_3: 'PROVIDER_3',
};
const GOOD_PROVIDERS = [PROVIDERS.PROVIDER_1, PROVIDERS.PROVIDER_2];
const BAD_PROVIDERS = [PROVIDERS.PROVIDER_3];
类型为:
const GOOD_PROVIDERS: ("PROVIDER_1" | "PROVIDER_2")[]
const BAD_PROVIDERS: ("PROVIDER_3"")[]
然后,如果我尝试检查这些数组之一中是否包含某个值,则会遇到一些我不知道如何处理的编译错误:
const provider: 'PROVIDER_1' | 'PROVIDER_2' | 'PROVIDER_3' = getProvider();
const isGood = GOOD_PROVIDERS.includes(provider);
const isBad = BAD_PROVIDERS.includes(provider);
GOOD_PROVIDERS的包含引发此错误
“'PROVIDER_1”类型的参数| “ PROVIDER_2” | “ PROVIDER_3”不是 可分配给类型为““ PROVIDER_1”的参数| “ PROVIDER_2”。类型 '“ PROVIDER_3”'不能分配给类型'“ PROVIDER_1” | “ PROVIDER_2”'。ts(2345)
BAD_PROVIDERS的包含引发此错误
“'PROVIDER_1”类型的参数| “ PROVIDER_2” | “ PROVIDER_3”不能分配给类型“ PROVIDER_3”的参数。 不能将类型“ PROVIDER_1”分配给类型“ PROVIDER_3”。ts(2345)
为什么Array.includes假定参数已在列表中?还有其他方法可以检查吗?