2017-03-17 35 views
2

我正在使用VSL的TSLint擴展代碼。我有一堆[tslint] misplaced 'else' (one-line)警告。例如,在下面的代碼示例,棉短絨強調其他字並給出了同樣的警告:typescript - tslint錯位'else'(單行)

代碼:

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

這有什麼代碼問題?

+0

錯誤消息說明問題是什麼。有什麼難以理解的? – 2017-03-18 10:56:23

+0

Google「[tslint]放錯了'else'(單行)」。一個答案是[從文檔頁面](https://palantir.github.io/tslint/rules/one-line/),它在第一行說明*要求指定的標記與表達式在同一行在他們之前。*第一個結果將是[這個SO問題](http://stackoverflow.com/questions/35261282/tslint-one-line-rule-misplaced-else),這也給出了明確的答案。 – 2017-03-19 13:45:54

+1

兄弟@torazaburo它並不總是那麼容易。在線也意味着所有基於條件的單行代碼。 –

回答

7

tslint one-line rule documentation

規則:一個行

需要指定的令牌是對作爲 表達它們之前的同一條線上。

您啓用了一個名爲one-line的tslint規則,其中指定了一個令牌check-else。這告訴tslint警告每個else與前一個結束大括號不在同一行的語句。如果您將else語句向上移動到if語句的結束大括號的同一行,則應滿足tslint規則。

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