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
export function get<Obj, Key extends keyof Obj>(obj: Obj, key: Key) {
const value = obj[key];
if (value) {
return value;
}
throw new Error('BOOM!')
}
get({ foo: null }, "foo");
ESLint Config
module.exports = {
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"project": "./tsconfig.json"
},
"plugins": [
"@typescript-eslint"
],
"rules": {
"@typescript-eslint/no-unnecessary-condition": "error"
}
}
tsconfig
Expected Result
No error.
Actual Result
The rule flags if (value)
as error because it thinks value
is always truthy.
Additional Info
The type of value is Obj[Key]
here. Maybe the rule wrongly thinks that generic lookup types are always truthy.
Metadata
Metadata
Assignees
Labels
Go ahead, send a pull request that resolves this issueGo ahead, send a pull request that resolves this issueSomething isn't workingSomething isn't workingIssues related to @typescript-eslint/eslint-pluginIssues related to @typescript-eslint/eslint-plugin