no-use-before-define
Disallow the use of variables before they are defined.
此规则扩展了基本 eslint/no-use-before-define
规则。
它增加了对 type
、interface
和 enum
声明的支持。
英: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 Playgroundfunction foo() {
return Foo.FOO;
}
enum Foo {
FOO,
}
Open in Playgroundtypedefs
如果这是 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 PlaygroundignoreTypeReferences
如果这是 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如何使用
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 内核