Spec-Zone.ru › ESLint

Без неявного приведения типов

Запретить сокращенные преобразования типов

🔧 Исправимо

Некоторые проблемы, выявленные этим правилом, автоматически исправимы с помощью параметра --fix командной строки

💡 hasSuggestions

Некоторые проблемы, выявленные этим правилом, можно исправить вручную с помощью подсказок редактора подсказок

В JavaScript существует множество способов преобразования типов значений. Некоторые из них могут быть сложными для чтения и понимания.

Например:

var b = !!foo;
var b = ~foo.indexOf(".");
var n = +foo;
var n = -(-foo);
var n = foo - 0;
var n = 1 * foo;
var s = "" + foo;
foo += ``;

Их можно заменить следующим кодом:

var b = Boolean(foo);
var b = foo.indexOf(".") !== -1;
var n = Number(foo);
var n = Number(foo);
var n = Number(foo);
var n = Number(foo);
var s = String(foo);
foo = String(foo);

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

Это правило предназначено для выделения более коротких обозначений преобразования типов и предлагает более понятные обозначения.

Параметры

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

  • "boolean" (true по умолчанию) - Когда это true, это правило предупреждает о более коротких преобразованиях типов для boolean типа.
  • "number" (true по умолчанию) - Когда это true, это правило предупреждает о более коротких преобразованиях типов для number типа.
  • "string" (true по умолчанию) - Когда это true, это правило предупреждает о более коротких преобразованиях типов для string типа.
  • "disallowTemplateShorthand" (false по умолчанию) - Когда это true, это правило предупреждает о преобразованиях типа string с использованием формы ${expression}.
  • "allow" (empty по умолчанию) - Каждый элемент в этом массиве может быть одним из ~, !!, +, - -, -, или * для разрешения.

Обратите внимание, что оператор + в списке allow также позволит +foo (преобразование к числу), а также "" + foo (преобразование к строке).

boolean

Примеры неправильного кода для параметра { "boolean": true } по умолчанию:

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

var b = !!foo;
var b = ~foo.indexOf(".");
// bitwise not is incorrect only with `indexOf`/`lastIndexOf` method calling.

Примеры правильного кода для параметра { "boolean": true } по умолчанию:

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

var b = Boolean(foo);
var b = foo.indexOf(".") !== -1;

var n = ~foo; // This is a just bitwise not.

number

Примеры неправильного кода для параметра { "number": true } по умолчанию:

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

var n = +foo;
var n = -(-foo);
var n = foo - 0;
var n = 1 * foo;

Примеры правильного кода для параметра { "number": true } по умолчанию:

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

var n = Number(foo);
var n = parseFloat(foo);
var n = parseInt(foo, 10);

var n = foo * 1/4; // `* 1` is allowed when followed by the `/` operator

string

Примеры неправильного кода для параметра { "string": true } по умолчанию:

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

var s = "" + foo;
var s = `` + foo;
foo += "";
foo += ``;

Примеры правильного кода для параметра { "string": true } по умолчанию:

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

var s = String(foo);
foo = String(foo);

Запретить сокращенные шаблоны

Этот параметр не затрагивает параметр string.

Примеры неправильного кода для параметра { "disallowTemplateShorthand": true }:

Открыть в Playground
/*eslint no-implicit-coercion: ["error", { "disallowTemplateShorthand": true }]*/

var s = `${foo}`;

Примеры правильного кода для параметра { "disallowTemplateShorthand": true }:

Открыть в Playground
/*eslint no-implicit-coercion: ["error", { "disallowTemplateShorthand": true }]*/

var s = String(foo);

var s = `a${foo}`;

var s = `${foo}b`;

var s = `${foo}${bar}`;

var s = tag`${foo}`;

Примеры правильного кода для параметра { "disallowTemplateShorthand": false } по умолчанию:

Открыть в Playground
/*eslint no-implicit-coercion: ["error", { "disallowTemplateShorthand": false }]*/

var s = `${foo}`;

Разрешить

Используя список allow можно переопределить и разрешить определённые операторы.

Примеры правильного кода для примера параметра { "allow": ["!!", "~"] }:

Открыть в Playground
/*eslint no-implicit-coercion: [2, { "allow": ["!!", "~"] } ]*/

var b = !!foo;
var b = ~foo.indexOf(".");

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

Если вы не хотите получать уведомления о более коротких обозначениях преобразования типов, вы можете безопасно отключить это правило.

Версия

Это правило было введено в ESLint v1.0.0-rc-2.

Ресурсы

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

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

Spec-Zone.ru

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