TypeScript plugin for ESLint providing comprehensive lint rules for TypeScript codebases
—
Core plugin setup and configuration presets for different TypeScript ESLint project requirements. Provides both legacy ESLint RC and modern flat configuration formats.
The default export providing the ESLint plugin with all rules and configurations.
/**
* Main ESLint plugin export with rules, configurations, and metadata
*/
interface PluginExport {
/** Legacy ESLint RC configuration presets */
configs: Record<string, ClassicConfig.Config>;
/** Plugin metadata including name and version */
meta: FlatConfig.PluginMeta;
/** All available TypeScript ESLint rules */
rules: TypeScriptESLintRules;
}Usage Example:
import plugin from "@typescript-eslint/eslint-plugin";
// Access configurations
const recommendedConfig = plugin.configs.recommended;
// Access individual rules
const noUnusedVarsRule = plugin.rules["no-unused-vars"];
// Plugin metadata
console.log(plugin.meta.name); // "@typescript-eslint/eslint-plugin"
console.log(plugin.meta.version); // "8.42.0"Extended plugin export with flat configurations and parser integration.
/**
* Extended plugin export with flat configs and parser
*/
interface RawPluginExport {
/** Flat configuration presets for ESLint 9+ */
flatConfigs: Record<string, FlatConfig.Config | FlatConfig.ConfigArray>;
/** TypeScript ESLint parser instance */
parser: FlatConfig.Parser;
/** Main plugin export */
plugin: PluginExport;
}Usage Example:
import { plugin, parser, flatConfigs } from "@typescript-eslint/eslint-plugin/use-at-your-own-risk/raw-plugin";
// Use flat configuration
export default [
...flatConfigs["flat/recommended"],
{
languageOptions: {
parser: parser,
parserOptions: {
project: "./tsconfig.json"
}
},
plugins: {
"@typescript-eslint": plugin
}
}
];Pre-configured rule sets for legacy ESLint RC format.
interface LegacyConfigs {
/** All available rules enabled */
all: ClassicConfig.Config;
/** Base configuration */
base: ClassicConfig.Config;
/** Disables type-checked rules */
"disable-type-checked": ClassicConfig.Config;
/** ESLint recommended rules overrides */
"eslint-recommended": ClassicConfig.Config;
/** Recommended TypeScript rules */
recommended: ClassicConfig.Config;
/** @deprecated Use recommended-type-checked instead */
"recommended-requiring-type-checking": ClassicConfig.Config;
/** Recommended rules requiring type checking */
"recommended-type-checked": ClassicConfig.Config;
/** Only type-checked recommended rules */
"recommended-type-checked-only": ClassicConfig.Config;
/** Strict rule enforcement */
strict: ClassicConfig.Config;
/** Strict rules with type checking */
"strict-type-checked": ClassicConfig.Config;
/** Only strict type-checked rules */
"strict-type-checked-only": ClassicConfig.Config;
/** Code style rules */
stylistic: ClassicConfig.Config;
/** Stylistic rules with type checking */
"stylistic-type-checked": ClassicConfig.Config;
/** Only stylistic type-checked rules */
"stylistic-type-checked-only": ClassicConfig.Config;
}Usage Example:
// .eslintrc.js
module.exports = {
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
extends: [
"@typescript-eslint/recommended",
"@typescript-eslint/recommended-type-checked"
],
parserOptions: {
project: "./tsconfig.json"
}
};Modern flat configuration presets for ESLint 9+.
interface FlatConfigs {
/** All available rules enabled */
"flat/all": FlatConfig.ConfigArray;
/** Base configuration */
"flat/base": FlatConfig.Config;
/** Disables type-checked rules */
"flat/disable-type-checked": FlatConfig.Config;
/** ESLint recommended rules overrides */
"flat/eslint-recommended": FlatConfig.Config;
/** Recommended TypeScript rules */
"flat/recommended": FlatConfig.ConfigArray;
/** Recommended rules requiring type checking */
"flat/recommended-type-checked": FlatConfig.ConfigArray;
/** Only type-checked recommended rules */
"flat/recommended-type-checked-only": FlatConfig.ConfigArray;
/** Strict rule enforcement */
"flat/strict": FlatConfig.ConfigArray;
/** Strict rules with type checking */
"flat/strict-type-checked": FlatConfig.ConfigArray;
/** Only strict type-checked rules */
"flat/strict-type-checked-only": FlatConfig.ConfigArray;
/** Code style rules */
"flat/stylistic": FlatConfig.ConfigArray;
/** Stylistic rules with type checking */
"flat/stylistic-type-checked": FlatConfig.ConfigArray;
/** Only stylistic type-checked rules */
"flat/stylistic-type-checked-only": FlatConfig.ConfigArray;
}Usage Example:
// eslint.config.js
import tseslint from "@typescript-eslint/eslint-plugin/use-at-your-own-risk/raw-plugin";
export default [
...tseslint.flatConfigs["flat/recommended-type-checked"],
{
languageOptions: {
parser: tseslint.parser,
parserOptions: {
project: true
}
}
}
];TypeScript ESLint parser for processing TypeScript syntax.
/**
* TypeScript ESLint parser instance
*/
interface Parser {
/** Parser metadata */
meta: ParserMeta;
/** Main parsing function for ESLint */
parseForESLint(code: string, options: ParserOptions): ParseResult;
}
interface ParserOptions {
/** Path to TypeScript configuration file */
project?: string | string[] | boolean;
/** Additional TypeScript compiler options */
tsconfigRootDir?: string;
/** ESLint-specific options */
ecmaVersion?: number;
sourceType?: "script" | "module";
ecmaFeatures?: Record<string, boolean>;
}Usage Example:
import { parser } from "@typescript-eslint/eslint-plugin/use-at-your-own-risk/raw-plugin";
export default [
{
languageOptions: {
parser: parser,
parserOptions: {
project: ["./tsconfig.json", "./packages/*/tsconfig.json"],
tsconfigRootDir: __dirname
}
}
}
];// .eslintrc.js - Basic setup
module.exports = {
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
extends: ["@typescript-eslint/recommended"],
rules: {
"@typescript-eslint/no-unused-vars": "error"
}
};// .eslintrc.js - With type checking
module.exports = {
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
extends: ["@typescript-eslint/recommended-type-checked"],
parserOptions: {
project: "./tsconfig.json"
},
rules: {
"@typescript-eslint/no-floating-promises": "error",
"@typescript-eslint/no-unsafe-assignment": "warn"
}
};// eslint.config.js - Modern flat config
import tseslint from "@typescript-eslint/eslint-plugin/use-at-your-own-risk/raw-plugin";
export default [
...tseslint.flatConfigs["flat/strict-type-checked"],
{
languageOptions: {
parser: tseslint.parser,
parserOptions: {
project: true
}
},
rules: {
"@typescript-eslint/explicit-function-return-type": "error"
}
}
];interface ClassicConfig {
extends?: string[];
plugins?: string[];
rules?: Record<string, RuleConfig>;
parser?: string;
parserOptions?: ParserOptions;
env?: Record<string, boolean>;
globals?: Record<string, boolean>;
}
interface FlatConfig {
languageOptions?: {
parser?: Parser;
parserOptions?: ParserOptions;
globals?: Record<string, boolean>;
ecmaVersion?: number;
sourceType?: "script" | "module";
};
plugins?: Record<string, Plugin>;
rules?: Record<string, RuleConfig>;
files?: string[];
ignores?: string[];
}
interface PluginMeta {
name: string;
version: string;
}
type RuleConfig =
| "off" | "warn" | "error"
| 0 | 1 | 2
| [("off" | "warn" | "error" | 0 | 1 | 2), ...unknown[]];
interface ParseResult {
ast: Program;
scopeManager: ScopeManager;
visitorKeys: VisitorKeys;
}Install with Tessl CLI
npx tessl i tessl/npm-typescript-eslint--eslint-plugin