Reputation: 11474
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.
Upvotes: 183
Views: 320310
Reputation: 67370
There are many reasons you could be getting this error/warning:
tsconfig.json
needs to default/disable noUnusedLocals
and noUnusedParameters
."@typescript-eslint/no-unused-vars": ["off"],
."editor.showUnused"
may be set to true. It overwrites these tsconfig.json and .eslintrc.json settings, at least in my workspace.You can find this setting by searching for "unused":
For me, I actually want this warning most of the time* but not always. Unfortunately, none of the comment hints seem to work on this vscode setting. The only workarounds/hack I've found is to put an export
in front of it.
* Maybe that's a good reason to turn it on everywhere, something I'll try later.
Upvotes: 8
Reputation: 2821
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.
Upvotes: 48
Reputation: 1550
Fist question:
Edit the file: tsconfig.json
, adding/modifying key "noUnusedLocals": false
as follows.
{
"compilerOptions": {
"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.
Upvotes: 121
Reputation: 2639
Any parameter name starting with _
is exempt from the check. Use _myVariable
instead of myvariable
to remove this warning.
Upvotes: 164
Reputation: 6342
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,
}
}
Upvotes: 18
Reputation: 4456
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
Upvotes: 1
Reputation: 10917
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.
Upvotes: 45
Reputation: 846
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
// ...
// ...
Upvotes: 1
Reputation: 11
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 {
}
Upvotes: 1
Reputation: 4263
There are two type of variables and you can do it in two ways
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
Upvotes: 4
Reputation: 139
Another way to avoid this is to create a get-method for every variable you have, like this:
get variablename():variabletype{return this.variablename;}
Upvotes: -2
Reputation: 18762
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.
Upvotes: 5