Skip to main content

no-use-before-define

Disallow the use of variables before they are defined.


此规则扩展了基本 eslint/no-use-before-define 规则。 它增加了对 typeinterfaceenum 声明的支持。

英:This rule extends the base eslint/no-use-before-define rule. It adds support for type, interface and enum declarations.

选项

该规则添加了以下选项:

英:This rule adds the following options:

interface Options extends BaseNoUseBeforeDefineOptions {
enums?: boolean;
typedefs?: boolean;
ignoreTypeReferences?: boolean;
}

const defaultOptions: Options = {
...baseNoUseBeforeDefineDefaultOptions,
enums: true,
typedefs: true,
ignoreTypeReferences: true,
};

enums

如果这是 true,则此规则会在枚举声明之前对每个对枚举的引用触发警告。 如果这是 false,则当引用位于子作用域中时,此规则将忽略对枚举的引用。

英:If this is true, this rule warns every reference to a enum before the enum declaration. If this is false, this rule will ignore references to enums, when the reference is in a child scope.

{ "enums": true } 选项的代码示例:

英:Examples of code for the { "enums": true } option:

const x = Foo.FOO;

enum Foo {
FOO,
}
Open in Playground

typedefs

如果这是 true,则此规则会在类型声明之前对每个类型的引用触发警告。 如果这是 false,则此规则将忽略对类型的引用。

英:If this is true, this rule warns every reference to a type before the type declaration. If this is false, this rule will ignore references to types.

{ "typedefs": false } 选项的 correct 代码示例:

英:Examples of correct code for the { "typedefs": false } option:

let myVar: StringOrNumber;
type StringOrNumber = string | number;
Open in Playground

ignoreTypeReferences

如果这是 true,则此规则将忽略所有类型引用,例如类型注释和断言中的类型引用。 如果这是 false,这将检查所有类型引用。

英:If this is true, this rule ignores all type references, such as in type annotations and assertions. If this is false, this will will check all type references.

{ "ignoreTypeReferences": true } 选项的 correct 代码示例:

英:Examples of correct code for the { "ignoreTypeReferences": true } option:

let var1: StringOrNumber;
type StringOrNumber = string | number;

let var2: Enum;
enum Enum {}
Open in Playground

如何使用

.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 选项

资源

摘自 ❤️ ESLint 内核