githubEdit

Disallow the use of variables before they are defined (no-use-before-define)

PLEASE READ THIS ISSUE BEFORE USING THIS RULE #1856arrow-up-right

Rule Details

This rule extends the base eslint/no-use-before-definearrow-up-right rule. It adds support for type, interface and enum declarations.

How to use

{
  // 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"]
}

Options

See eslint/no-use-before-define optionsarrow-up-right. This rule adds the following options:

interface Options extends BaseNoMagicNumbersOptions {
  enums?: boolean;
  typedefs?: boolean;
}

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

enums

The flag which shows whether or not this rule checks enum declarations of upper scopes. If this is true, this rule warns every reference to a enum before the enum declaration. Otherwise, ignores those references.

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

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

typedefs

The flag which shows whether or not this rule checks type declarations. If this is true, this rule warns every reference to a type before the type declaration. Otherwise, ignores those references. Type declarations are hoisted, so it's safe.

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

Copied from the original ESLint rule docsarrow-up-right

Last updated