跳至主要内容

禁止使用未定义的变量

禁止在定义之前使用变量。

此规则扩展了基础 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 核心,❤️ 感谢。