consistent-return
需要
return
陳述式始終或從不指定值。
💭
此規則需要 類型資訊 才能執行。
此規則擴充基本 eslint/consistent-return
規則。此版本增加了對傳回 void
或 Promise<void>
的函式的支援。
警示
如果可以,建議使用 tsconfig 的 noImplicitReturns
選項,而不是此規則。noImplicitReturns
由 TS 的類型資訊和控制流程分析支援,因此比此規則有更好的覆蓋範圍。
- ❌ 錯誤
- ✅ 正確
function foo(): undefined {}
function bar(flag: boolean): undefined {
if (flag) return foo();
return;
}
async function baz(flag: boolean): Promise<undefined> {
if (flag) return;
return foo();
}
在遊樂場中開啟function foo(): void {}
function bar(flag: boolean): void {
if (flag) return foo();
return;
}
async function baz(flag: boolean): Promise<void | number> {
if (flag) return 42;
return;
}
在遊樂場中開啟選項
請參閱 eslint/consistent-return
選項。
如何使用
.eslintrc.cjs
module.exports = {
"rules": {
// Note: you must disable the base rule as it can report incorrect errors
"consistent-return": "off",
"@typescript-eslint/consistent-return": "error"
}
};
在遊樂場中嘗試此規則↗
何時不使用
經過類型檢查的 linter 規則比傳統的 linter 規則強大,但前提是需要設定經過類型檢查的 linting。如果在啟用經過類型檢查的規則後遇到效能降低的情況,請參閱效能疑難排解。