typescript - tslint неуместно 'else' (одна строка)

Я использую расширение TSLint для VS Code. Я получил кучу [tslint] misplaced 'else' (one-line) предупреждений. Например, в приведенном ниже примере кода линтер подчеркивает слово else и выдает такое же предупреждение:

Код:

if (user.isAdmin) {
    this.uiRouter.stateService.go('app.admin');
}
else {
    this.sharedVariables.user = user;
    this.navigateByUserType(user);
}

В чем проблема с этим кодом?


person Emre    schedule 17.03.2017    source источник
comment
В сообщении об ошибке точно сказано, в чем проблема. Что в этом сложного для понимания?   -  person    schedule 18.03.2017
comment
Google [tslint] неуместно "else" (одна строка). Одним из ответов будет со страницы документа, в первой строке которого говорится < i>Требуется, чтобы указанные токены находились в той же строке, что и предшествующее им выражение. Первым результатом будет это ТАК вопрос, который также дает четкий ответ.   -  person    schedule 19.03.2017
comment
брат @torazaburo, это не всегда так просто. Онлайн также означает, что весь условный код в одной строке.   -  person Ravinder Payal    schedule 05.04.2017
comment
Я сделал это, и это лучший хит.   -  person Quentin 2    schedule 08.09.2018
comment
Ответ — в этом нет ничего плохого, это отличное форматирование. Однако, чтобы ворс перестал жаловаться, добавьте фигурные скобки слева и справа от else.   -  person SendETHToThisAddress    schedule 26.03.2021


Ответы (2)


Из документации по однострочному правилу tslint

Правило: однострочный

Требует, чтобы указанные токены находились в той же строке, что и предшествующее им выражение.

У вас включено правило tslint под названием one-line с указанным токеном под названием check-else. Это говорит tslint предупреждать о каждом операторе else, который не находится на той же строке, что и предыдущая закрывающая фигурная скобка. Если вы переместите оператор else на ту же строку, что и завершающая фигурная скобка оператора if, правило tslint должно быть выполнено.

if (user.isAdmin) {
    this.uiRouter.stateService.go('app.admin');
} else {
    this.sharedVariables.user = user;
    this.navigateByUserType(user);
}
person jontem    schedule 18.03.2017

Всегда следите за тем, чтобы конечная фигурная скобка if и оператор else находились в одной строке.

Это соответствует документации однострочного правила TSLint.

person websplee    schedule 06.01.2021
comment
Чем этот ответ лучше принятого? Это в основном то же самое без ссылок и объяснений. - person Zsolt Meszaros; 06.01.2021
comment
Иногда люди просто хотят получить прямой ответ. И в основном использовал свой опыт в решении этого вопроса. Я должен был прочитать другие ответы, прежде чем давать свой. - person websplee; 07.01.2021