Как исправить ошибку, поскольку неявные скобки запрещены инструментом проверки кофе-линта?

У меня есть простой код CoffeeScript, который хорошо работает при интеграции с jQuery. Но coffee-lint инструмент проверки кода показывает следующую ошибку

coffeelint file.coffee

Скрытые скобки запрещены.

Мой код

$ ->
  $("#selector").dialog
    modal: true

Что может быть причиной этой ошибки?

2 ответа

Решение

Это будет минимальное изменение, которое вам нужно. Я рекомендую добавить () для вызова функции, но это правило не заботится о них.

$ ->
  $("#selector").dialog {
    modal: true
  }

modal: true подразумевается быть объектом. Чтобы продемонстрировать, почему это правило полезно включить, допустим, у вас был очень похожий код, который принимает параметр.

makeDialog = (foo) ->
  $("#selector").dialog
    modal: true,
    foo: foo,

Этот код выглядит хорошо, он даже правильно компилируется. Но в какой-то момент вы заметили, что foo: foo можно упростить

makeDialog = (foo) ->
  $("#selector").dialog
    modal: true,
    foo,

Теперь ваш код не работает. CoffeeScript правильно догадался, что modal: true это свойство неявного объекта, который является первым параметром dialog, но он не знает, foo является вторым свойством этого объекта или вторым параметром функции. Это заканчивается компиляцией к этому:

return $("#selector").dialog({ modal: true }, foo);

У вас есть файл конфигурации coffeelint? Если да, проверьте, что политика no_implicit_braces не была изменена (по умолчанию игнорируется).

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