'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

  1. argsIgnorePattern
  2. 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