'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
I'm using Typescript and ESLint and I don't understand why this ESLint error is showing for array[5] === undefined:
Unnecessary conditional, the types have no overlap.ESLint(@typescript-eslint/no-unnecessary-condition)
Since this is an array of numbers ESLint is telling me that the check is an unnecessary conditional. But I want to know if the given index holds a value. What am I supposed to do here instead so the error does not show up?
Here is a Sandbox with the error showing: Sandbox
Solution 1:[1]
Because array[5] has the type of number, rather than number | undefined.
In the following example, the error is not present:
const array = [1,2,3]
const item = array[5] as number | undefined
if (item === undefined)
array[5] = 5
Consider setting "strictNullChecks": true to be able to operate with nulls and undefineds, and setting "noUncheckedIndexedAccess": true to include … | undefined in index signature property access:
{
"compilerOptions": {
"strictNullChecks": true,
"noUncheckedIndexedAccess": true
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
