What is @typescript-eslint/scope-manager?
The @typescript-eslint/scope-manager package is part of the TypeScript ESLint project. It is used to generate TypeScript-aware scope information for ESLint. This scope information is essential for linting TypeScript codebases, as it understands TypeScript-specific features like types and interfaces, which are not present in regular JavaScript.
What are @typescript-eslint/scope-manager's main functionalities?
Scope Analysis
The package analyzes the scope of variables and types within TypeScript code. It helps in identifying where variables are defined and how they are being used, which is crucial for linting and avoiding errors like variable shadowing or undeclared variables.
N/A
TypeScript-specific Scope Handling
It extends ESLint's scope analysis capabilities to understand TypeScript-specific constructs such as interfaces, types, and enums, which are not part of the standard JavaScript language.
N/A
Integration with ESLint
The scope manager is designed to work seamlessly with ESLint, allowing developers to use ESLint's rule set for TypeScript code. It provides the necessary scope information to ESLint rules so they can operate on TypeScript code as they would on JavaScript code.
N/A
Other packages similar to @typescript-eslint/scope-manager
eslint-scope
eslint-scope is a package that performs scope analysis for JavaScript code. It is used by ESLint to determine the variables and their references within the code. Unlike @typescript-eslint/scope-manager, it does not have built-in support for TypeScript-specific features.
ts-morph
ts-morph is a TypeScript compiler API wrapper that provides an easier way to interact with the TypeScript compiler. It includes features for analyzing and manipulating TypeScript code, which can be used for tasks similar to scope analysis. However, it is a more general-purpose tool and not specifically tailored for ESLint integration.
typescript-eslint-parser
typescript-eslint-parser is a parser that allows ESLint to lint TypeScript code. It is an older package that has been deprecated in favor of @typescript-eslint/parser, which works in conjunction with @typescript-eslint/scope-manager to provide linting capabilities for TypeScript code.
8.0.1 (2024-08-05)
🩹 Fixes
- eslint-plugin: [no-unused-vars] ignore imports used only as types (#9694)
❤️ Thank You
You can read about our versioning strategy and releases on our website.
👉 See Announcing typescript-eslint v8 for an upgrade guide and the full list of changes.
⚠️ Breaking Changes
- typescript-estree: split TSMappedType typeParameter into constraint and key (#7065)
- parser: always enable comment, loc, range, tokens (#8617)
- eslint-plugin: [prefer-nullish-coalescing] change ignoreConditionalTests default to true (#8872)
- typescript-estree: enable dot globs for project by default (#8818)
- eslint-plugin: deprecate no-loss-of-precision extension rule (#8832)
- eslint-plugin: remove formatting/layout rules (#8833)
- typescript-estree: remove slow deprecated and isolated programs (#8834)
- typescript-estree: add TSEnumBody node for TSEnumDeclaration body (#8920)
- typescript-estree: rename automaticSingleRunInference to disallowAutomaticSingleRunInference (#8922)
- ast-spec: remove deprecated type params (#8933)
- type-utils: remove IsNullableTypeOptions interface (#8934)
- eslint-plugin: [no-unused-vars] align catch behavior to ESLint 9 (#8971)
- utils: swap LegacyESLint out for FlatESLint as ESLint export (#8972)
- eslint-plugin: split no-empty-object-type out from ban-types and no-empty-interfaces (#8977)
- utils: allow specifying additional rule meta.docs in RuleCreator (#9025)
- eslint-plugin: apply initial config changes for v8 (#9079)
- eslint-plugin: replace ban-types with no-restricted-types, no-unsafe-function-type, no-wrapper-object-types (#9102)
- typescript-estree: remove EXPERIMENTAL_useSourceOfProjectReferenceRedirect (#9104)
- eslint-plugin: remove no-useless-template-literals (#9207)
- type-utils: remove getTokenAtPosition (#9444)
- eslint-plugin: [no-floating-promises] disable checkThenables by default for v8 (#9559)
- rule-tester: switched to flat config (#9603)
🚀 Features
- stricter parent types for the AST (#9560)
- speed up non-type-aware linting with project service (#8322)
- v8 integration branch (#9165)
- eslint-plugin: remove deprecated no-throw-literal rule (#9092)
- eslint-plugin: [no-floating-promises] add 'allowForKnownSafeCalls' option (#9234)
- eslint-plugin: [no-unused-vars] add
reportUnusedIgnorePattern
option (#9324) - eslint-plugin: [no-unused-vars] support
ignoreClassWithStaticInitBlock
(#9325) - eslint-plugin: [no-unused-vars] handle comma operator for assignments, treat for-of the same as for-in (#9326)
- eslint-plugin: [no-unused-vars] report if var used only in typeof (#9330)
- eslint-plugin: [return-await] add return-await to strict-type-checked preset (#9604)
- eslint-plugin: [no-unnecessary-type-parameters] promote to strict (#9662)
- rule-tester: support multipass fixes (#8883)
- type-utils: support intersection types in TypeOrValueSpecifier (#9633)
- typescript-estree: stabilize EXPERIMENTAL_useProjectService as projectService (#9084)
- typescript-estree: also remove projectService in withoutProjectParserOptions (#9287)
- typescript-estree: exposes ProjectService logs through the plugin (#9337)
- utils: add Linter configType constructor option (#8999)
- utils: remove deprecated context helpers (#9000)
🩹 Fixes
- correct eslint-plugin's peerDependency on parser@8 (#9089)
- bring back in allowdefaultprojectforfiles rename (7dfceeeea)
- disable
projectService
in disabled-type-checked
shared config (#9460) - eslint-plugin: include alpha pre-releases in parser peer dependency (#9099)
- eslint-plugin: correct rules.d.ts types to not rely on non-existent imports (#9339)
- eslint-plugin: remove duplicate import
RuleModuleWithMetaDocs
(#9465) - eslint-plugin: [no-unnecessary-template-expression] do not render escaped strings in autofixes (#8688)
- eslint-plugin: [no-unused-vars] incorporate upstream changes around caught errors report messages (#9532)
- eslint-plugin: [no-misused-promises] perf: avoid getting types of variables/functions if the annotated type is obviously not a function (#9656)
- rule-tester: set configType to eslintrc in Linter options (#9178)
- rule-tester: re-apply updates from main (#9180)
- rule-tester: provide Linter a cwd in its constructor (#9678)
- type-utils: also check declared modules for package names in TypeOrValueSpecifier (#9500)
- types: allow ProjectServiceOptions for projectService (#9318)
- typescript-estree: pass extraFileExtensions to projectService (#9051)
- typescript-estree: only run projectService setHostConfiguration when needed (#9336)
- typescript-estree: specific error for parserOptions.project not including a file (#9584)
- typescript-estree: adds support for project services using extended config files (#9306)
- typescript-estree: factor tsconfigRootDir into allowDefaultProject (#9675)
❤️ Thank You
- Abraham Guo
- Alfred Ringstad @alfredringstad
- auvred @auvred
- Brad Zacher @bradzacher
- Christopher Aubut @higherorderfunctor
- Collin Bachman @bachmacintosh
- James Henry @JamesHenry
- Josh Goldberg
- Josh Goldberg ✨
- Kirk Waiblinger @kirkwaiblinger
- StyleShit @StyleShit
- Victor Lin @yepitschunked
- Yukihiro Hasegawa @y-hsgw
You can read about our versioning strategy and releases on our website.