Spec-Zone.ru › ESLint

no-import-assign

Запрет присваивания импортированным связям

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

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

Изменения импортированных связей с помощью ES Modules могут вызывать ошибки во время выполнения.

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

Это правило предупреждает о присваиваниях, инкрементах и декрементах импортированных связей.

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

Открыть в Playground
/*eslint no-import-assign: "error"*/

import mod, { named } from "./mod.mjs"
import * as mod_ns from "./mod.mjs"

mod = 1          // ERROR: 'mod' is readonly.
named = 2        // ERROR: 'named' is readonly.
mod_ns.named = 3 // ERROR: The members of 'mod_ns' are readonly.
mod_ns = {}      // ERROR: 'mod_ns' is readonly.
// Can't extend 'mod_ns'
Object.assign(mod_ns, { foo: "foo" }) // ERROR: The members of 'mod_ns' are readonly.

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

Открыть в Playground
/*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

Spec-Zone.ru

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