'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.
Solution 1:[1]
Any parameter name starting with _ is exempt from the check. Use _myVariable instead of myvariable to remove this warning.
Solution 2:[2]
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.
Solution 3:[3]
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.
Solution 4:[4]
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.
Solution 5:[5]
Extend the tsconfig.json with dev.tsconfig.json
And run the command tsc -p ./dev.tsconfig.json
This will disable the unused variable and unused parameter in development
Inside dev.tsconfig.json:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noUnusedLocals": false,
"noUnusedParameters": false,
}
}
Solution 6:[6]
I am using typescript": "2.9.1" with tslint": "^5.10.0.
I was getting tons of error such as
Property 'logger' is declared but its value is never read.
Also, I observed that I was getting a warning when running ng-lint
$> ng lint
no-unused-variable is deprecated. Since TypeScript 2.9. Please use the built-in compiler checks instead.
So, I removed the no-unused-variable rule fromt tslint.json - and that seems to solve the problem for me.
Solution 7:[7]
There are two type of variables and you can do it in two ways
- argsIgnorePattern
varsIgnorePattern
no-unused-vars: ["error", { "argsIgnorePattern": "^_" }]no-unused-vars: ["error", { "varsIgnorePattern": "^_" }]
Both these rule in eslint will ignore any function arguments and variables that starts with _ sign respectively
Solution 8:[8]
I saw a solution on this web site: https://phpenthusiast.com/blog/angular-form-ngform-and-two-ways-data-binding.
it helped me but only 50% of it
This is my modified code:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';// i added this line and one more line.
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { DheerajComponent } from './dheeraj/dheeraj.component'
@NgModule({
declarations: [
AppComponent,
DheerajComponent
],
imports: [
BrowserModule,
AppRoutingModule,
FormsModule, // this one. remaining all default code
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
}
Solution 9:[9]
In react if you have some thing like this
export default class Body extends Component {
let data = null; // somethings like this line
// ...
// ...
convert it to
export default class Body extends Component {
data = null; // somethings like this line
// ...
// ...
Solution 10:[10]
If someone needs to disable it just for a moment, when developing, the best way may be to just run the tsc compiler with an additional command line flag:
$npx tsc -w --noUnusedLocals false --noUnusedParameters false
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 | Jaroslav Bezděk |
| Solution 2 | Liam |
| Solution 3 | edwin |
| Solution 4 | |
| Solution 5 | PatS |
| Solution 6 | Wand Maker |
| Solution 7 | Kalana |
| Solution 8 | IndieGameDev |
| Solution 9 | Nima |
| Solution 10 |
