为什么 ESLint 在检查数组值是否存在时抱怨 "Unnecessary conditional"?
Why is ESLint complaining about "Unnecessary conditional" when checking if an array value exists?
const array = [1,2,3]
if (array[5] === undefined)
array[5] = 5
我正在使用 Typescript 和 ESLint,但我不明白为什么 array[5] === undefined
:
显示此 ESLint 错误
Unnecessary conditional, the types have no overlap.ESLint(@typescript-eslint/no-unnecessary-condition)
因为这是一个数字数组,所以 ESLint 告诉我检查是不必要的条件。但我想知道给定的索引是否有值。我应该在这里做什么而不是显示错误?
这是一个显示错误的沙盒:Sandbox
因为array[5]
的类型是number
,而不是number | undefined
。
在下面的例子中,错误is not present:
const array = [1,2,3]
const item = array[5] as number | undefined
if (item === undefined)
array[5] = 5
考虑设置 "strictNullChecks": true
以能够使用 null
s 和 undefined
s 进行操作,并设置 "noUncheckedIndexedAccess": true
以在索引签名中包含 … | undefined
属性 访问:
{
"compilerOptions": {
"strictNullChecks": true,
"noUncheckedIndexedAccess": true
}
}
const array = [1,2,3]
if (array[5] === undefined)
array[5] = 5
我正在使用 Typescript 和 ESLint,但我不明白为什么 array[5] === undefined
:
Unnecessary conditional, the types have no overlap.ESLint(@typescript-eslint/no-unnecessary-condition)
因为这是一个数字数组,所以 ESLint 告诉我检查是不必要的条件。但我想知道给定的索引是否有值。我应该在这里做什么而不是显示错误?
这是一个显示错误的沙盒:Sandbox
因为array[5]
的类型是number
,而不是number | undefined
。
在下面的例子中,错误is not present:
const array = [1,2,3]
const item = array[5] as number | undefined
if (item === undefined)
array[5] = 5
考虑设置 "strictNullChecks": true
以能够使用 null
s 和 undefined
s 进行操作,并设置 "noUncheckedIndexedAccess": true
以在索引签名中包含 … | undefined
属性 访问:
{
"compilerOptions": {
"strictNullChecks": true,
"noUncheckedIndexedAccess": true
}
}