noUnusedVariables
Summary
Section titled Summary- Rule available since:
v1.0.0
- Diagnostic Category:
lint/correctness/noUnusedVariables
- This rule has an unsafe fix.
- The default severity of this rule is information.
- Sources:
- Same as
no-unused-vars
- Same as
@typescript-eslint/no-unused-vars
- Same as
unused-imports/no-unused-vars
- Same as
Description
Section titled DescriptionDisallow unused variables.
There is an exception to this rule:
variables that starts with underscore, e.g. let _something;
.
The pattern of having an underscore as prefix of a name of variable is a very diffuse pattern among programmers, and Biome decided to follow it.
This rule won’t report unused imports. If you want to report unused imports, enable noUnusedImports.
Options
Section titled OptionsThe rule supports the following options:
{ "options": { "ignoreRestSiblings": true }}
ignoreRestSiblings
: Whether to ignore unused variables from an object destructuring with a spread (i.e.: whethera
andb
inconst { a, b, ...rest } = obj
should be ignored by this rule). Defaults tofalse
.
Examples
Section titled ExamplesInvalid
Section titled Invalidlet a = 4;a++;
code-block.js:1:5 lint/correctness/noUnusedVariables FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ This variable is unused.
> 1 │ let a = 4;
│ ^
2 │ a++;
3 │
ℹ Unused variables usually are result of incomplete refactoring, typos and other source of bugs.
ℹ Unsafe fix: If this is intentional, prepend a with an underscore.
1 │ - let·a·=·4;
2 │ - a++;
1 │ + let·_a·=·4;
2 │ + _a++;
3 3 │
function foo() {}
code-block.js:1:10 lint/correctness/noUnusedVariables ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ This function is unused.
> 1 │ function foo() {}
│ ^^^
2 │
ℹ Unused variables usually are result of incomplete refactoring, typos and other source of bugs.
function foo() { foo();}
code-block.js:1:10 lint/correctness/noUnusedVariables ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ This function is unused.
> 1 │ function foo() {
│ ^^^
2 │ foo();
3 │ }
ℹ Unused variables usually are result of incomplete refactoring, typos and other source of bugs.
const foo = () => { foo();};
code-block.js:1:7 lint/correctness/noUnusedVariables FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ This variable is unused.
> 1 │ const foo = () => {
│ ^^^
2 │ foo();
3 │ };
ℹ Unused variables usually are result of incomplete refactoring, typos and other source of bugs.
ℹ Unsafe fix: If this is intentional, prepend foo with an underscore.
1 │ - const·foo·=·()·=>·{
2 │ - ····foo();
1 │ + const·_foo·=·()·=>·{
2 │ + ····_foo();
3 3 │ };
4 4 │
export function f<T>() {}
code-block.ts:1:19 lint/correctness/noUnusedVariables FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ This type parameter is unused.
> 1 │ export function f<T>() {}
│ ^
2 │
ℹ Unused variables usually are result of incomplete refactoring, typos and other source of bugs.
ℹ Unsafe fix: If this is intentional, prepend T with an underscore.
1 │ - export·function·f<T>()·{}
1 │ + export·function·f<_T>()·{}
2 2 │
// With `ignoreRestSiblings: false`const car = { brand: "Tesla", year: 2019, countryCode: "US" };const { brand, ...other } = car;console.log(other);
code-block.js:3:9 lint/correctness/noUnusedVariables ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ This variable is unused.
1 │ // With ignoreRestSiblings: false
2 │ const car = { brand: “Tesla”, year: 2019, countryCode: “US” };
> 3 │ const { brand, …other } = car;
│ ^^^^^
4 │ console.log(other);
5 │
ℹ Unused variables usually are result of incomplete refactoring, typos and other source of bugs.
ℹ You can use the ‘ignoreRestSiblings’ option to ignore unused variables in an object destructuring with a spread.
Valid
Section titled Validfunction foo(b) { console.log(b)};foo();
export function foo(_unused) {}
function used_overloaded(): number;function used_overloaded(s: string): string;function used_overloaded(s?: string) { return s;}used_overloaded();
// With `ignoreRestSiblings: false`const car = { brand: "Tesla", year: 2019, countryCode: "US" };const { brand: _brand, ...other } = car;console.log(other);
// With `ignoreRestSiblings: true`const car = { brand: "Tesla", year: 2019, countryCode: "US" };const { brand, ...other } = car;console.log(other);
How to configure
Section titled How to configure{ "linter": { "rules": { "correctness": { "noUnusedVariables": "error" } } }}