no-import-assign
Запрет присваивания импортированным связям
Использование конфигурации recommended из @eslint/js в файле конфигурации включает эту проверку
Изменения импортированных связей с помощью ES Modules могут вызывать ошибки во время выполнения.
Подробное описание правила
Это правило предупреждает о присваиваниях, инкрементах и декрементах импортированных связей.
Примеры некорректного кода для этого правила:
/*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