no-use-before-define
定義前に変数を使用することを禁止します。
このルールは、基本のeslint/no-use-before-define
ルールを拡張します。type
、interface
、enum
宣言のサポートを追加します。
使用方法
.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"
}
};
このルールをPlaygroundでお試しください ↗
オプション
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
の場合、このルールはenum宣言の前にenumへの参照ごとに警告を出します。これがfalse
の場合、このルールは、参照が子スコープ内にある場合、enumへの参照を無視します。
{ "enums": true }
オプションのコード例
- ❌ 正しくない
- ✅ 正しい
const x = Foo.FOO;
enum Foo {
FOO,
}
Playgroundで開くfunction foo() {
return 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で開く