no-import-assign
Запрещает присваивать значения импортированным привязкам
Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило
Изменение импортированных привязок модулями ES приводит к ошибкам времени выполнения.
Описание правила
Это правило предупреждает о присваиваниях, инкрементах и декрементах импортированных привязок.
Примеры неправильного кода для этого правила:
/*eslint no-import-assign: "error"*/
import mod, { named } from "./mod.mjs"
import * as mod_ns from "./mod.mjs"
// ERROR: 'mod' is readonly.
// ERROR: 'named' is readonly.
// ERROR: The members of 'mod_ns' are readonly.
// ERROR: 'mod_ns' is readonly.
// Can't extend 'mod_ns'
// ERROR: The members of 'mod_ns' are readonly.
Примеры правильного кода для этого правила:
/*eslint no-import-assign: "error"*/
import mod, { named } from "./mod.mjs"
import * as mod_ns from "./mod.mjs"
mod.prop = 1
named.prop = 2
mod_ns.named.prop = 3
// Known Limitation
function test(obj) {
obj.named = 4 // Not errored because 'obj' is not namespace objects.
}
test(mod_ns) // Not errored because it doesn't know that 'test' updates the member of the argument.
Параметры
У этого правила нет параметров.
Когда не следует использовать это правило
Если вы не хотите получать уведомления об изменении импортированных привязок, это правило можно отключить.
Обрабатывается TypeScript
Это правило можно безопасно отключить при использовании TypeScript, поскольку компилятор TypeScript выполняет эту проверку.
Обратите внимание, что компилятор не обнаружит случай Object.assign(). Поэтому, если в вашей кодовой базе используется Object.assign(), это правило всё ещё может быть полезно.
Версия
Это правило появилось в ESLint v6.4.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-import-assign