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 ;
if (status === 'ready') {
console.log('Ready!');
}
let ;
greet(user);
function test() {
let ;
return error || "Unknown error";
}
let ;
const { debug } = options || {};
let ;
while (!flag) {
// Do something...
}
let ;
function init() {
return config?.enabled;
}
В TypeScript:
/*eslint no-unassigned-vars: "error"*/
let ;
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).
Связанные правила
Версия
Это правило появилось в ESLint v9.27.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-unassigned-vars