const array = [1,2,3]
if (array[5] === undefined)
array[5] = 5
我正在使用 Typescript 和 ESLint,但我不明白为什么会出现此 ESLint 错误
array[5] === undefined
:
不必要的条件,类型没有重叠。ESLint(@typescript-eslint/no-unnecessary-condition)
由于这是一个数字数组,ESLint 告诉我该检查是不必要的条件。但我想知道给定的索引是否具有值。我应该在这里做什么才能不显示错误?
这是一个沙盒,显示错误:Sandbox
因为
array[5]
的类型是 number
,而不是 number | undefined
。
在以下示例中,错误不存在:
const array = [1,2,3]
const item = array[5] as number | undefined
if (item === undefined)
array[5] = 5
考虑设置
"strictNullChecks": true
以便能够与 null
和 undefined
一起操作,并设置 "noUncheckedIndexedAccess": true
以在索引签名属性访问中包含 … | undefined
:
{
"compilerOptions": {
"strictNullChecks": true,
"noUncheckedIndexedAccess": true
}
}
请注意,
"noUncheckedIndexedAccess": true
让 TypeScript 有点偏执(每个 array[index]
都可能成为 undefined
),这可能不适合您的开发风格。