禁止在宣告前使用
禁用在宣告之前使用變數。
此規則延伸基本的 eslint/no-use-before-define
規則。它新增對 type
、interface
和 enum
宣告的支援。
如何使用
.eslintrc.cjs
module.exports = {
"rules": {
// Note: you must disable the base rule as it can report incorrect errors
"no-use-before-define": "off",
"@typescript-eslint/no-use-before-define": "error"
}
};
在遊樂場中試試這個規則 ↗
選項
請參閱 eslint/no-use-before-define
選項。
此規則新增下列選項
interface Options extends BaseNoUseBeforeDefineOptions {
enums?: boolean;
typedefs?: boolean;
ignoreTypeReferences?: boolean;
}
const defaultOptions: Options = {
...baseNoUseBeforeDefineDefaultOptions,
enums: true,
typedefs: true,
ignoreTypeReferences: true,
};
enums
如果這裡是true
,這條規則會在列舉宣告前,警告所有對列舉的參照。如果這裡是false
,當參照在子範圍中時,這條規則會忽略對列舉的參照。
使用 { "enums": true }
選項時,範例程式碼
- ❌ 錯誤
- ✅ 正確
const x = Foo.FOO;
enum Foo {
FOO,
}
在 Playground 中開啟function foo() {
return Foo.FOO;
}
enum Foo {
FOO,
}
在 Playground 中開啟typedefs
如果這裡是true
,這條規則會在類型宣告前,警告所有對類型的參照。如果這裡是false
,這條規則會忽略對類型的參照。
使用 { "typedefs": false }
選項時,正確的程式碼範例
let myVar: StringOrNumber;
type StringOrNumber = string | number;
在 Playground 中開啟ignoreTypeReferences
如果這裡是true
,這條規則會忽略所有類型參照,例如類型註解和斷言。如果這裡是false
,這條規則會檢查所有類型參照。
使用 { "ignoreTypeReferences": true }
選項時,正確的程式碼範例
let var1: StringOrNumber;
type StringOrNumber = string | number;
let var2: Enum;
enum Enum {}
在 Playground 中開啟