What is @typescript-eslint/types?
The @typescript-eslint/types package is part of the TypeScript-ESLint project, which provides a TypeScript parser for ESLint and utilities for working with TypeScript and ESLint together. This specific package contains TypeScript definitions for ESLint-specific types, making it easier to work with ESLint configurations, rules, and plugins in a TypeScript environment. It is primarily used by developers who are creating custom ESLint rules or configurations and want to leverage TypeScript's type-checking capabilities for better development experience.
What are @typescript-eslint/types's main functionalities?
AST Node Types
Provides TypeScript interfaces for AST nodes generated by the parser. This is useful for writing type-safe code that inspects or manipulates the AST, such as custom ESLint rules.
import { TSESTree } from '@typescript-eslint/types';
function processNode(node: TSESTree.Node) {
if (node.type === 'Identifier') {
console.log('Found an identifier:', node.name);
}
}
Rule Definition Helpers
Includes types for defining ESLint rules in a TypeScript-friendly way, making it easier to create custom rules with type safety.
import { TSESLint } from '@typescript-eslint/types';
const myRule: TSESLint.RuleModule<'my-error', []> = {
meta: {
type: 'problem',
docs: {
description: 'My custom rule',
recommended: 'error'
}
},
create(context) {
return {
Identifier(node) {
context.report({
node,
messageId: 'my-error'
});
}
};
}
};
Other packages similar to @typescript-eslint/types
@typescript-eslint/experimental-utils
This package provides a set of utilities for working with TypeScript and ESLint, including ESLint rule helpers and AST utilities. It is similar to @typescript-eslint/types but offers a broader range of tools for rule development and AST manipulation.
eslint-plugin-typescript
An older package that aimed to add TypeScript support to ESLint before the official @typescript-eslint project was established. It provides some similar functionalities but is now deprecated in favor of the more comprehensive and up-to-date @typescript-eslint suite of packages.
@typescript-eslint/types
Types for the TypeScript-ESTree AST spec
This package exists to help us reduce cycles and provide lighter-weight packages at runtime.
✋ Internal Package
This is an internal package to the typescript-eslint monorepo.
You likely don't want to use it directly.
👉 See https://typescript-eslint.io for docs on typescript-eslint.