Spec-Zone.ru › ESLint

no-unassigned-vars

Запрещает переменные let или var, которые читаются, но никогда не получают значение

✅ Рекомендуется

Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило

Это правило помечает объявления let или var, которым никогда не присваивается значение, но которые всё же читаются или используются в коде. Поскольку эти переменные всегда будут undefined, их использование, вероятно, является ошибкой программирования.

Например, если проверить значение переменной status, которой никогда не присваивали значение, она всегда будет undefined:

let status;

// ...forgot to assign a value to status...

if (status === 'ready') {
  console.log('Ready!');
}

Подробное описание правила

Примеры некорректного кода для этого правила:

Открыть в песочнице
/*eslint no-unassigned-vars: "error"*/

let status;
if (status === 'ready') {
  console.log('Ready!');
}

let user;
greet(user);

function test() {
  let error;
  return error || "Unknown error";
}

let options;
const { debug } = options || {};

let flag;
while (!flag) {
  // Do something...
}

let config;
function init() {
  return config?.enabled;
}

В TypeScript:

Открыть в песочнице
/*eslint no-unassigned-vars: "error"*/

let value: number | undefined;
console.log(value);

Примеры корректного кода для этого правила:

Открыть в песочнице
/*eslint no-unassigned-vars: "error"*/

let message = "hello";
console.log(message);

let user;
user = getUser();
console.log(user.name);

let count;
count = 1;
count++;

// Variable is unused (should be reported by `no-unused-vars` only)
let temp;

let error;
if (somethingWentWrong) {
  error = "Something went wrong";
}
console.log(error);

let item;
for (item of items) {
  process(item);
}

let config;
function setup() {
  config = { debug: true };
}
setup();
console.log(config);

let one = undefined;
if (one === two) {
  // Noop
}

В TypeScript:

Открыть в песочнице
/*eslint no-unassigned-vars: "error"*/

declare let value: number | undefined;
console.log(value);

declare module "my-module" {
  let value: string;
  export = value;
}

Параметры

У этого правила нет параметров.

Когда не следует использовать это правило

Вы можете отключить это правило, если в коде намеренно используются объявленные переменные, которые используются, но которым никогда не присваивается значение. Такое может встречаться в следующих случаях:

  • Устаревшие кодовые базы, где неинициализированные переменные используются как заполнители.
  • Некоторые сценарии использования TypeScript, в которых переменные объявляются с типом и намеренно остаются без присвоенного значения (хотя предпочтительнее использовать declare).

Связанные правила

  • init-declarations
  • no-unused-vars
  • prefer-const

Версия

Это правило появилось в ESLint v9.27.0.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-unassigned-vars

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API