Skip to content

complete/no-unnecessary-assignment

💼 This rule is enabled in the ✅ recommended config.

📝 Disallows useless assignments.

💭 This rule requires type information.

Sometimes, refactoring can lead to assignment statements that were once useful but are now redundant. This rule helps you clean up the dead code in a similar way that the @typescript-eslint/no-unnecessary-condition rule does.

// Bad
declare let foo: 1;
declare let bar: 1;
foo = bar;
// Bad
declare let foo: number;
foo += 0;
// Bad
declare let foo: string;
foo += "";
// Bad
declare const foo: boolean;
const bar = foo || false;
const baz = foo && true;
// Bad
declare const foo: number;
const bar = foo || 0;
// Bad
declare const foo: string;
const bar = foo || "";
// Bad
declare const foo: string | null;
const bar = foo ?? null;
// Bad
declare const foo: string | undefined;
const bar = foo ?? undefined;

Note that while “<<” is technically a useless operator when combined with 0, this rule will not report on it so that bit flag enums will not cause false positives.

This rule is not configurable.