跳到主要內容

禁止在宣告前使用

禁用在宣告之前使用變數。

此規則延伸基本的 eslint/no-use-before-define 規則。它新增對 typeinterfaceenum 宣告的支援。

如何使用

.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 中開啟

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 中開啟

資源

帶著 ❤️ 取自 ESLint 核心