TypeScript icon, indicating that this package has built-in type declarations

    5.30.5 • Public • Published

    TypeScript Scope Manager

    CI NPM Version NPM Downloads

    This is a fork of eslint-scope, enhanced to support TypeScript functionality. You can view the original license for the code here.

    This package is consumed automatically by @typescript-eslint/parser. You probably don't want to use it directly.

    Getting Started

    You can find our Getting Started docs here


    $ yarn add -D typescript @typescript-eslint/scope-manager
    $ npm i --save-dev typescript @typescript-eslint/scope-manager


    analyze(tree, options)

    Analyses a given AST and returns the resulting ScopeManager.

    interface AnalyzeOptions {
       * Known visitor keys.
      childVisitorKeys?: Record<string, string[]> | null;
       * Which ECMAScript version is considered.
       * Defaults to `2018`.
       * `'latest'` is converted to 1e8 at parser.
      ecmaVersion?: EcmaVersion | 1e8;
       * Whether the whole script is executed under node.js environment.
       * When enabled, the scope manager adds a function scope immediately following the global scope.
       * Defaults to `false`.
      globalReturn?: boolean;
       * Implied strict mode (if ecmaVersion >= 5).
       * Defaults to `false`.
      impliedStrict?: boolean;
       * The identifier that's used for JSX Element creation (after transpilation).
       * This should not be a member expression - just the root identifier (i.e. use "React" instead of "React.createElement").
       * Defaults to `"React"`.
      jsxPragma?: string;
       * The identifier that's used for JSX fragment elements (after transpilation).
       * If `null`, assumes transpilation will always use a member on `jsxFactory` (i.e. React.Fragment).
       * This should not be a member expression - just the root identifier (i.e. use "h" instead of "h.Fragment").
       * Defaults to `null`.
      jsxFragmentName?: string | null;
       * The lib used by the project.
       * This automatically defines a type variable for any types provided by the configured TS libs.
       * For more information, see https://www.typescriptlang.org/tsconfig#lib
       * Defaults to the lib for the provided `ecmaVersion`.
      lib?: Lib[];
       * The source type of the script.
      sourceType?: 'script' | 'module';
       * Emit design-type metadata for decorated declarations in source.
       * Defaults to `false`.
      emitDecoratorMetadata?: boolean;

    Example usage:

    import { analyze } from '@typescript-eslint/scope-manager';
    import { parse } from '@typescript-eslint/typescript-estree';
    const code = `const hello: string = 'world';`;
    const ast = parse(code, {
      // note that scope-manager requires ranges on the AST
      range: true,
    const scope = analyze(ast, {
      ecmaVersion: 2020,
      sourceType: 'module',



    See the contributing guide here


    npm i @typescript-eslint/scope-manager

    DownloadsWeekly Downloads






    Unpacked Size

    571 kB

    Total Files


    Last publish


    • jameshenry