Rule: no-use-before-declare
Disallows usage of variables before their declaration.
This rule is primarily useful when using the var
keyword since the compiler will
automatically detect if a block-scoped let
and const
variable is used before
declaration. Since most modern TypeScript doesn’t use var
, this rule is generally
discouraged and is kept around for legacy purposes. It is slow to compute, is not
enabled in the built-in configuration presets, and should not be used to inform TSLint
design decisions.
Notes:
Config
Not configurable.
Config examples
"no-use-before-declare": true
Schema
null
Code examples:
Check that referenced variables are declared beforehand (default)
"rules": { "no-use-before-declare": true }
Passes
var hello = 'world';
var foo;
console.log(hello, foo, capitalize(hello));
// 'world', undefined, 'WORLD'
function capitalize(val) {
return val.toUpperCase();
}
import { default as foo1 } from "./lib";
import foo2 from "./lib";
import _, { map, foldl } from "./underscore";
import * as foo3 from "./lib";
import "./lib";
function declaredImports() {
console.log(foo1);
console.log(foo2);
console.log(foo3);
map([], (x) => x);
}
Fails
console.log(hello, foo);
var hello = 'world';
var foo;
function undeclaredImports() {
console.log(foo1);
console.log(foo2);
console.log(foo3);
map([], (x) => x);
}
import { default as foo1 } from "./lib";
import foo2 from "./lib";
import _, { map, foldl } from "./underscore";
import * as foo3 from "./lib";
import "./lib";