Closed
Description
Before You File a Bug Report Please Confirm You Have Done The Following...
- I have tried restarting my IDE and the issue persists.
- I have updated to the latest version of the packages.
- I have searched for related issues and found none that matched my issue.
- I have read the FAQ and my problem is not listed.
Playground Link
Repro Code
const obj: { prop?: [number] } = {};
function setOnce(value: number): [number] {
return obj.prop ??= [value]; // ! @typescript-eslint/no-unnecessary-condition: "Unnecessary conditional, expected left-hand side of `??` operator to be possibly null or undefined."
}
ESLint Config
module.exports = {
parser: "@typescript-eslint/parser",
rules: {
"@typescript-eslint/no-unnecessary-condition": "error",
},
};
tsconfig
Expected Result
I expected the expression obj.prop ??= [value]
to not report an error.
Since the property hasn’t been set yet, it is actually undefined at runtime.
Actual Result
The expression obj.prop ??= [value]
is reported as an error.
typescript-eslint thinks obj.prop
is non-nullish since exactOptionalPropertyTypes
is on. We don’t want to turn it off because we still don’t want to allow statements like obj.prop = undefined;
.