Eslint и Prettier no semi rule не вызывает выполнение строки, когда следующая строка заключена в скобки

В настоящее время у меня есть nosemi набор правил в Prettier и ESLint. Учтите следующее.

let a = myArr.find(x => x.id === c.id)
let b = myArr2.find(x => x.id === c.id)

(a.id && a.id != b.id) && doStuff()

Он пытается выполнить его как функцию, как это...

let b = myArr2.find(x => x.id === c.id)(a.id && a.id != b.id) && doStuff()

Я мог бы просто удалить парены, но в некоторых ситуациях мне нужны парены, чтобы следующая строка работала нормально.

Я также мог бы сделать что-то вроде if (a.id && a.id != b.id) doStuff() но в этот момент я меняю код для стиля.

Есть ли способ обойти это?

1 ответ

Вы можете использовать стандартную точку с запятой в качестве разделителя ;,

let a = [true].find(Boolean)

; (a || !a) && console.log('gotcha')

Или пустая инструкция блока {},

let a = [true].find(Boolean)

{}

(a || !a) && console.log('gotcha')

Или используйте void оператор, который разделяет строки, но для выполнения второй части требуется скобка.

let a = [true].find(Boolean)

void ((a || !a) && console.log('gotcha'))
console.log(a);

Другие вопросы по тегам