Skip to content

noRedundantUseStrict

biome.json
{
"linter": {
"rules": {
"suspicious": {
"noRedundantUseStrict": "error"
}
}
}
}

Prevents from having redundant "use strict".

The directive "use strict" isn’t needed in .mjs files, or in .js files inside projects where the package.json defines library as module:

{
"type": "module"
}

Instead, .cjs files are considered “scripts” and the directive "use strict" is accepted and advised.

"use strict";
function foo() {
"use strict";
}
code-block.cjs:3:3 lint/suspicious/noRedundantUseStrict  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Redundant use strict directive.

1 │ “use strict”;
2 │ function foo() {
> 3 │ “use strict”;
^^^^^^^^^^^^^
4 │ }
5 │

This outer use strict directive already enables strict mode.

> 1 │ “use strict”;
^^^^^^^^^^^^^
2 │ function foo() {
3 │ “use strict”;

Safe fix: Remove the redundant use strict directive.

3 │ ·use·strict;
-------------
"use strict";
"use strict";
function foo() {
}
code-block.cjs:2:1 lint/suspicious/noRedundantUseStrict  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Redundant use strict directive.

1 │ “use strict”;
> 2 │ “use strict”;
^^^^^^^^^^^^^
3 │
4 │ function foo() {

This outer use strict directive already enables strict mode.

> 1 │ “use strict”;
^^^^^^^^^^^^^
2 │ “use strict”;
3 │

Safe fix: Remove the redundant use strict directive.

2 │ use·strict;
-------------
function foo() {
"use strict";
"use strict";
}
code-block.cjs:3:1 lint/suspicious/noRedundantUseStrict  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Redundant use strict directive.

1 │ function foo() {
2 │ “use strict”;
> 3 │ “use strict”;
^^^^^^^^^^^^^
4 │ }
5 │

This outer use strict directive already enables strict mode.

1 │ function foo() {
> 2 │ “use strict”;
^^^^^^^^^^^^^
3 │ “use strict”;
4 │ }

Safe fix: Remove the redundant use strict directive.

3 │ use·strict;
-------------
class C1 {
test() {
"use strict";
}
}
code-block.cjs:3:3 lint/suspicious/noRedundantUseStrict  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Redundant use strict directive.

1 │ class C1 {
2 │ test() {
> 3 │ “use strict”;
^^^^^^^^^^^^^
4 │ }
5 │ }

All parts of a class’s body are already in strict mode.

> 1 │ class C1 {
^^^^^^^^^^
> 2 │ test() {
> 3 │ “use strict”;
> 4 │ }
> 5 │ }
^
6 │

Safe fix: Remove the redundant use strict directive.

3 │ use·strict;
-------------
const C2 = class {
test() {
"use strict";
}
};
code-block.cjs:3:3 lint/suspicious/noRedundantUseStrict  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Redundant use strict directive.

1 │ const C2 = class {
2 │ test() {
> 3 │ “use strict”;
^^^^^^^^^^^^^
4 │ }
5 │ };

All parts of a class’s body are already in strict mode.

> 1 │ const C2 = class {
^^^^^^^
> 2 │ test() {
> 3 │ “use strict”;
> 4 │ }
> 5 │ };
^
6 │

Safe fix: Remove the redundant use strict directive.

3 │ use·strict;
-------------
function foo() {
}
function foo() {
"use strict";
}
function bar() {
"use strict";
}