tslint how to disable error "someVariable is declared but its value is never read"
I'm using tslint, and got the error.
'myVariable' is declared but its value is never read.
I went to the website that documents the rules https://palantir.github.io/tslint/rules/ and searched for the string is declared but its value is never read
but didn't find that text. While I can and did look for settings that might be tied to this error, it shouldn't be a guessing game.
What is the configuration change needed to suppress/stop this error?
Just as importantly, when I get an error in tslint that says "this happened" how can I find what setting is used to configure or change the tslint behavior on how to handle that error?
I also did a search on the website (google search I used was)
site:palantir.github.io is declared but its value is never read
but a direct hit did not appear, so the answer might be on the palantir.github.io website but I just didn't (yet) find it.
How do others find the tslint variable/configuration settings that change to suppress a particular error?
Please refrain from suggesting I comment out the code that is causing the problem. I'm looking for an answer to my more general question as well as to the specific question. Thank you.
Any parameter name starting with _ is exempt from the check. Use _myVariable
instead of myvariable
to remove this warning.
Fist question:
Edit the file:tsconfig.json, adding/modifying key "noUnusedLocals": false
.
You'll need to restart the server.
Second question:
If it is a tslint error; VS Code shows, in the error message, the rule that's been applied.
Identifier 'doc' is never reassigned; use 'const' instead of 'let'. (prefer-const)
The prefer-const
rule in this case.
Add this line just before the line which causes the error:
/* tslint:disable:no-unused-variable */
You will no longer receive the tslint error message.
This is a better solution than turning off the error for you whole codebase in tslint.conf because then it wouldn't catch variables that really aren't used.
New solution
First, turn off noUnusedLocals
in tsconfig.json:
{
"compilerOptions": {
"noUnusedLocals": false,
}
}
Then fix eslint rules in .eslintrc.js
:
module.exports = {
rules: {
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': ['error', { 'varsIgnorePattern': '^_', "argsIgnorePattern": "^_" }],
},
};
And If using @typescript-eslint/naming-convention
rule should add leadingUnderscore: 'allow'
, For example, if you are using Airbnb config:
'@typescript-eslint/naming-convention': [
'error',
{
selector: 'variable',
format: ['camelCase', 'PascalCase', 'UPPER_CASE'],
leadingUnderscore: 'allow',
},
{
selector: 'function',
format: ['camelCase', 'PascalCase'],
},
{
selector: 'typeLike',
format: ['PascalCase'],
},
],
Note: you should update all related eslint
packages in package.json to the latest version manually.
Extend the tsconfig.json with dev.tsconfig.json
And run the command tsc -p ./dev.tsconfig.json
This will deisable the unused variable and unused parameter in development
Inside dev.tsconfig.json:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noUnusedLocals": false,
"noUnusedParameters": false,
}
}