You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{"payload":{"allShortcutsEnabled":false,"path":"packages/eslint-plugin","repo":{"id":293389002,"defaultBranch":"master","name":"typescript-eslint","ownerLogin":"runk","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2020-09-07T00:59:43.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/903687?v=4","public":true,"private":false,"isOrgOwned":false},"currentUser":null,"refInfo":{"name":"master","listCacheKey":"v0:1615017210.957097","canEdit":false,"refType":"branch","currentOid":"86936537bd6f1075cbceeb8d2d4e254d75188409"},"tree":{"items":[{"name":"docs/rules","path":"packages/eslint-plugin/docs/rules","contentType":"directory","hasSimplifiedPath":true},{"name":"src","path":"packages/eslint-plugin/src","contentType":"directory"},{"name":"tests","path":"packages/eslint-plugin/tests","contentType":"directory"},{"name":"tools","path":"packages/eslint-plugin/tools","contentType":"directory"},{"name":"typings","path":"packages/eslint-plugin/typings","contentType":"directory"},{"name":"CHANGELOG.md","path":"packages/eslint-plugin/CHANGELOG.md","contentType":"file"},{"name":"LICENSE","path":"packages/eslint-plugin/LICENSE","contentType":"file"},{"name":"README.md","path":"packages/eslint-plugin/README.md","contentType":"file"},{"name":"ROADMAP.md","path":"packages/eslint-plugin/ROADMAP.md","contentType":"file"},{"name":"jest.config.js","path":"packages/eslint-plugin/jest.config.js","contentType":"file"},{"name":"package.json","path":"packages/eslint-plugin/package.json","contentType":"file"},{"name":"tsconfig.build.json","path":"packages/eslint-plugin/tsconfig.build.json","contentType":"file"},{"name":"tsconfig.json","path":"packages/eslint-plugin/tsconfig.json","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":{"displayName":"README.md","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 align=\"center\" tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eESLint Plugin TypeScript\u003c/h1\u003e\u003ca id=\"user-content-eslint-plugin-typescript\" class=\"anchor\" aria-label=\"Permalink: ESLint Plugin TypeScript\" href=\"#eslint-plugin-typescript\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp align=\"center\" dir=\"auto\"\u003eAn ESLint plugin which provides lint rules for TypeScript codebases.\u003c/p\u003e\n\u003cp align=\"center\" dir=\"auto\"\u003e\n \u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/typescript-eslint/typescript-eslint/workflows/CI/badge.svg\"\u003e\u003cimg src=\"https://github.com/typescript-eslint/typescript-eslint/workflows/CI/badge.svg\" alt=\"CI\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n \u003ca href=\"https://www.npmjs.com/package/@typescript-eslint/eslint-plugin\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/da6feadfd6a2bed9f67c0c3f636f133f4503e3328194b38a958aae152cd29eb3/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f40747970657363726970742d65736c696e742f65736c696e742d706c7567696e2e7376673f7374796c653d666c61742d737175617265\" alt=\"NPM Version\" data-canonical-src=\"https://img.shields.io/npm/v/@typescript-eslint/eslint-plugin.svg?style=flat-square\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n \u003ca href=\"https://www.npmjs.com/package/@typescript-eslint/eslint-plugin\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/eaba0e2e0fa24402425d848f82b06e29afbd207f4413593c3ea1f877f0d80afa/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f40747970657363726970742d65736c696e742f65736c696e742d706c7567696e2e7376673f7374796c653d666c61742d737175617265\" alt=\"NPM Downloads\" data-canonical-src=\"https://img.shields.io/npm/dm/@typescript-eslint/eslint-plugin.svg?style=flat-square\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGetting Started\u003c/h2\u003e\u003ca id=\"user-content-getting-started\" class=\"anchor\" aria-label=\"Permalink: Getting Started\" href=\"#getting-started\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/docs/getting-started/linting/README.md\"\u003eYou can find our Getting Started docs here\u003c/a\u003e\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md\"\u003eYou can find our FAQ / Troubleshooting docs here\u003c/a\u003e\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThese docs walk you through setting up ESLint, this plugin, and our parser. If you know what you're doing and just want to quick start, read on...\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eQuick-start\u003c/h2\u003e\u003ca id=\"user-content-quick-start\" class=\"anchor\" aria-label=\"Permalink: Quick-start\" href=\"#quick-start\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eInstallation\u003c/h3\u003e\u003ca id=\"user-content-installation\" class=\"anchor\" aria-label=\"Permalink: Installation\" href=\"#installation\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eMake sure you have TypeScript and \u003ca href=\"/runk/typescript-eslint/blob/master/packages/parser\"\u003e\u003ccode\u003e@typescript-eslint/parser\u003c/code\u003e\u003c/a\u003e installed:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ yarn add -D typescript @typescript-eslint/parser\n$ npm i --save-dev typescript @typescript-eslint/parser\"\u003e\u003cpre\u003e$ yarn add -D typescript @typescript-eslint/parser\n$ npm i --save-dev typescript @typescript-eslint/parser\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThen install the plugin:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ yarn add -D @typescript-eslint/eslint-plugin\n$ npm i --save-dev @typescript-eslint/eslint-plugin\"\u003e\u003cpre\u003e$ yarn add -D @typescript-eslint/eslint-plugin\n$ npm i --save-dev @typescript-eslint/eslint-plugin\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIt is important that you use the same version number for \u003ccode\u003e@typescript-eslint/parser\u003c/code\u003e and \u003ccode\u003e@typescript-eslint/eslint-plugin\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eNote:\u003c/strong\u003e If you installed ESLint globally (using the \u003ccode\u003e-g\u003c/code\u003e flag) then you must also install \u003ccode\u003e@typescript-eslint/eslint-plugin\u003c/code\u003e globally.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUsage\u003c/h3\u003e\u003ca id=\"user-content-usage\" class=\"anchor\" aria-label=\"Permalink: Usage\" href=\"#usage\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAdd \u003ccode\u003e@typescript-eslint/parser\u003c/code\u003e to the \u003ccode\u003eparser\u003c/code\u003e field and \u003ccode\u003e@typescript-eslint\u003c/code\u003e to the plugins section of your \u003ccode\u003e.eslintrc\u003c/code\u003e configuration file, then configure the rules you want to use under the rules section.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-json notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"{\n \u0026quot;parser\u0026quot;: \u0026quot;@typescript-eslint/parser\u0026quot;,\n \u0026quot;plugins\u0026quot;: [\u0026quot;@typescript-eslint\u0026quot;],\n \u0026quot;rules\u0026quot;: {\n \u0026quot;@typescript-eslint/rule-name\u0026quot;: \u0026quot;error\u0026quot;\n }\n}\"\u003e\u003cpre\u003e{\n \u003cspan class=\"pl-ent\"\u003e\"parser\"\u003c/span\u003e: \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e@typescript-eslint/parser\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e,\n \u003cspan class=\"pl-ent\"\u003e\"plugins\"\u003c/span\u003e: [\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e@typescript-eslint\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e],\n \u003cspan class=\"pl-ent\"\u003e\"rules\"\u003c/span\u003e: {\n \u003cspan class=\"pl-ent\"\u003e\"@typescript-eslint/rule-name\"\u003c/span\u003e: \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eerror\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n }\n}\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou can also enable all the recommended rules for our plugin. Add \u003ccode\u003eplugin:@typescript-eslint/recommended\u003c/code\u003e in extends:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-json notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"{\n \u0026quot;extends\u0026quot;: [\u0026quot;plugin:@typescript-eslint/recommended\u0026quot;]\n}\"\u003e\u003cpre\u003e{\n \u003cspan class=\"pl-ent\"\u003e\"extends\"\u003c/span\u003e: [\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eplugin:@typescript-eslint/recommended\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e]\n}\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eNote: Make sure to use \u003ccode\u003eeslint --ext .js,.ts\u003c/code\u003e since by \u003ca href=\"https://eslint.org/docs/user-guide/command-line-interface#--ext\" rel=\"nofollow\"\u003edefault\u003c/a\u003e \u003ccode\u003eeslint\u003c/code\u003e will only search for \u003ccode\u003e.js\u003c/code\u003e files.\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eRecommended Configs\u003c/h3\u003e\u003ca id=\"user-content-recommended-configs\" class=\"anchor\" aria-label=\"Permalink: Recommended Configs\" href=\"#recommended-configs\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou can also use \u003ca href=\"https://eslint.org/docs/rules/\" rel=\"nofollow\"\u003e\u003ccode\u003eeslint:recommended\u003c/code\u003e\u003c/a\u003e (the set of rules which are recommended for all projects by the ESLint Team) with this plugin:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-json notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"{\n \u0026quot;extends\u0026quot;: [\u0026quot;eslint:recommended\u0026quot;, \u0026quot;plugin:@typescript-eslint/recommended\u0026quot;]\n}\"\u003e\u003cpre\u003e{\n \u003cspan class=\"pl-ent\"\u003e\"extends\"\u003c/span\u003e: [\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eeslint:recommended\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eplugin:@typescript-eslint/recommended\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e]\n}\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAs of version 2 of this plugin, \u003cem\u003eby design\u003c/em\u003e, none of the rules in the main \u003ccode\u003erecommended\u003c/code\u003e config require type-checking in order to run. This means that they are more lightweight and faster to run.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSome highly valuable rules simply require type-checking in order to be implemented correctly, however, so we provide an additional config you can extend from called \u003ccode\u003erecommended-requiring-type-checking\u003c/code\u003e. You would apply this \u003cem\u003ein addition\u003c/em\u003e to the recommended configs previously mentioned, e.g.:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-json notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"{\n \u0026quot;extends\u0026quot;: [\n \u0026quot;eslint:recommended\u0026quot;,\n \u0026quot;plugin:@typescript-eslint/recommended\u0026quot;,\n \u0026quot;plugin:@typescript-eslint/recommended-requiring-type-checking\u0026quot;\n ]\n}\"\u003e\u003cpre\u003e{\n \u003cspan class=\"pl-ent\"\u003e\"extends\"\u003c/span\u003e: [\n \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eeslint:recommended\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e,\n \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eplugin:@typescript-eslint/recommended\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e,\n \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eplugin:@typescript-eslint/recommended-requiring-type-checking\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n ]\n}\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003ePro Tip: For larger codebases you may want to consider splitting our linting into two separate stages: 1. fast feedback rules which operate purely based on syntax (no type-checking), 2. rules which are based on semantics (type-checking).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/docs/getting-started/linting/TYPED_LINTING.md\"\u003eYou can read more about linting with type information here\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSupported Rules\u003c/h2\u003e\u003ca id=\"user-content-supported-rules\" class=\"anchor\" aria-label=\"Permalink: Supported Rules\" href=\"#supported-rules\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eKey\u003c/strong\u003e: ✔️ = recommended, 🔧 = fixable, 💭 = requires type information\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eName\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003cth\u003e✔️\u003c/th\u003e\n\u003cth\u003e🔧\u003c/th\u003e\n\u003cth\u003e💭\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/adjacent-overload-signatures.md\"\u003e\u003ccode\u003e@typescript-eslint/adjacent-overload-signatures\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire that member overloads be consecutive\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/array-type.md\"\u003e\u003ccode\u003e@typescript-eslint/array-type\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequires using either \u003ccode\u003eT[]\u003c/code\u003e or \u003ccode\u003eArray\u0026lt;T\u0026gt;\u003c/code\u003e for arrays\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/await-thenable.md\"\u003e\u003ccode\u003e@typescript-eslint/await-thenable\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows awaiting a value that is not a Thenable\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/ban-ts-comment.md\"\u003e\u003ccode\u003e@typescript-eslint/ban-ts-comment\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eBans \u003ccode\u003e// @ts-\u0026lt;directive\u0026gt;\u003c/code\u003e comments from being used or requires descriptions after directive\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/ban-tslint-comment.md\"\u003e\u003ccode\u003e@typescript-eslint/ban-tslint-comment\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eBans \u003ccode\u003e// tslint:\u0026lt;rule-flag\u0026gt;\u003c/code\u003e comments from being used\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/ban-types.md\"\u003e\u003ccode\u003e@typescript-eslint/ban-types\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eBans specific types from being used\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/class-literal-property-style.md\"\u003e\u003ccode\u003e@typescript-eslint/class-literal-property-style\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnsures that literals on classes are exposed in a consistent style\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/consistent-type-assertions.md\"\u003e\u003ccode\u003e@typescript-eslint/consistent-type-assertions\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforces consistent usage of type assertions\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/consistent-type-definitions.md\"\u003e\u003ccode\u003e@typescript-eslint/consistent-type-definitions\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eConsistent with type definition either \u003ccode\u003einterface\u003c/code\u003e or \u003ccode\u003etype\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/consistent-type-imports.md\"\u003e\u003ccode\u003e@typescript-eslint/consistent-type-imports\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforces consistent usage of type imports\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/explicit-function-return-type.md\"\u003e\u003ccode\u003e@typescript-eslint/explicit-function-return-type\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire explicit return types on functions and class methods\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/explicit-member-accessibility.md\"\u003e\u003ccode\u003e@typescript-eslint/explicit-member-accessibility\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire explicit accessibility modifiers on class properties and methods\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/explicit-module-boundary-types.md\"\u003e\u003ccode\u003e@typescript-eslint/explicit-module-boundary-types\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire explicit return and argument types on exported functions' and classes' public class methods\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-delimiter-style.md\"\u003e\u003ccode\u003e@typescript-eslint/member-delimiter-style\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire a specific member delimiter style for interfaces and type literals\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-ordering.md\"\u003e\u003ccode\u003e@typescript-eslint/member-ordering\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire a consistent member declaration order\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/method-signature-style.md\"\u003e\u003ccode\u003e@typescript-eslint/method-signature-style\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforces using a particular method signature syntax.\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/naming-convention.md\"\u003e\u003ccode\u003e@typescript-eslint/naming-convention\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforces naming conventions for everything across a codebase\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-base-to-string.md\"\u003e\u003ccode\u003e@typescript-eslint/no-base-to-string\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequires that \u003ccode\u003e.toString()\u003c/code\u003e is only called on objects which provide useful information when stringified\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-confusing-non-null-assertion.md\"\u003e\u003ccode\u003e@typescript-eslint/no-confusing-non-null-assertion\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow non-null assertion in locations that may be confusing\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-dynamic-delete.md\"\u003e\u003ccode\u003e@typescript-eslint/no-dynamic-delete\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow the delete operator with computed key expressions\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-empty-interface.md\"\u003e\u003ccode\u003e@typescript-eslint/no-empty-interface\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow the declaration of empty interfaces\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-explicit-any.md\"\u003e\u003ccode\u003e@typescript-eslint/no-explicit-any\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow usage of the \u003ccode\u003eany\u003c/code\u003e type\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-non-null-assertion.md\"\u003e\u003ccode\u003e@typescript-eslint/no-extra-non-null-assertion\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow extra non-null assertion\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extraneous-class.md\"\u003e\u003ccode\u003e@typescript-eslint/no-extraneous-class\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eForbids the use of classes as namespaces\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-floating-promises.md\"\u003e\u003ccode\u003e@typescript-eslint/no-floating-promises\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequires Promise-like values to be handled appropriately\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-for-in-array.md\"\u003e\u003ccode\u003e@typescript-eslint/no-for-in-array\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow iterating over an array with a for-in loop\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-implicit-any-catch.md\"\u003e\u003ccode\u003e@typescript-eslint/no-implicit-any-catch\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow usage of the implicit \u003ccode\u003eany\u003c/code\u003e type in catch clauses\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-implied-eval.md\"\u003e\u003ccode\u003e@typescript-eslint/no-implied-eval\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow the use of \u003ccode\u003eeval()\u003c/code\u003e-like methods\u003c/td\u003e\n\u003ctd\u003e✔️\u
8000
003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-inferrable-types.md\"\u003e\u003ccode\u003e@typescript-eslint/no-inferrable-types\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows explicit type declarations for variables or parameters initialized to a number, string, or boolean\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-invalid-void-type.md\"\u003e\u003ccode\u003e@typescript-eslint/no-invalid-void-type\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows usage of \u003ccode\u003evoid\u003c/code\u003e type outside of generic or return types\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-misused-new.md\"\u003e\u003ccode\u003e@typescript-eslint/no-misused-new\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce valid definition of \u003ccode\u003enew\u003c/code\u003e and \u003ccode\u003econstructor\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-misused-promises.md\"\u003e\u003ccode\u003e@typescript-eslint/no-misused-promises\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eAvoid using promises in places not designed to handle them\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-namespace.md\"\u003e\u003ccode\u003e@typescript-eslint/no-namespace\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow the use of custom TypeScript modules and namespaces\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md\"\u003e\u003ccode\u003e@typescript-eslint/no-non-null-asserted-optional-chain\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows using a non-null assertion after an optional chain expression\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-non-null-assertion.md\"\u003e\u003ccode\u003e@typescript-eslint/no-non-null-assertion\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows non-null assertions using the \u003ccode\u003e!\u003c/code\u003e postfix operator\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-parameter-properties.md\"\u003e\u003ccode\u003e@typescript-eslint/no-parameter-properties\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow the use of parameter properties in class constructors\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-require-imports.md\"\u003e\u003ccode\u003e@typescript-eslint/no-require-imports\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows invocation of \u003ccode\u003erequire()\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-this-alias.md\"\u003e\u003ccode\u003e@typescript-eslint/no-this-alias\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow aliasing \u003ccode\u003ethis\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-throw-literal.md\"\u003e\u003ccode\u003e@typescript-eslint/no-throw-literal\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow throwing literals as exceptions\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-type-alias.md\"\u003e\u003ccode\u003e@typescript-eslint/no-type-alias\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow the use of type aliases\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unnecessary-boolean-literal-compare\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eFlags unnecessary equality comparisons against boolean literals\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unnecessary-condition.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unnecessary-condition\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrevents conditionals where the type is always truthy or always falsy\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unnecessary-qualifier.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unnecessary-qualifier\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eWarns when a namespace qualifier is unnecessary\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unnecessary-type-arguments.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unnecessary-type-arguments\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforces that type arguments will not be used if not required\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unnecessary-type-assertion.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unnecessary-type-assertion\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eWarns if a type assertion does not change the type of an expression\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unsafe-assignment.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unsafe-assignment\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows assigning any to variables and properties\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unsafe-call.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unsafe-call\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows calling an any type value\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unsafe-member-access.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unsafe-member-access\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows member access on any typed variables\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unsafe-return.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unsafe-return\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows returning any from a function\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-var-requires.md\"\u003e\u003ccode\u003e@typescript-eslint/no-var-requires\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallows the use of require statements except in import statements\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-as-const.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-as-const\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrefer usage of \u003ccode\u003eas const\u003c/code\u003e over literal type\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-enum-initializers.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-enum-initializers\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrefer initializing each enums member value\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-for-of.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-for-of\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrefer a ‘for-of’ loop over a standard ‘for’ loop if the index is only used to access the array being iterated\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-function-type.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-function-type\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eUse function types instead of interfaces with call signatures\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-includes.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-includes\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce \u003ccode\u003eincludes\u003c/code\u003e method over \u003ccode\u003eindexOf\u003c/code\u003e method\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-literal-enum-member\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire that all enum members be literal values to prevent unintended enum member name shadow issues\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-namespace-keyword.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-namespace-keyword\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire the use of the \u003ccode\u003enamespace\u003c/code\u003e keyword instead of the \u003ccode\u003emodule\u003c/code\u003e keyword to declare custom TypeScript modules\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-nullish-coalescing\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce the usage of the nullish coalescing operator instead of logical chaining\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-optional-chain.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-optional-chain\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrefer using concise optional chain expressions instead of chained logical ands\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-readonly.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-readonly\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequires that private members are marked as \u003ccode\u003ereadonly\u003c/code\u003e if they're never modified outside of the constructor\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-readonly-parameter-types\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequires that function parameters are typed as readonly to prevent accidental mutation of inputs\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-reduce-type-parameter.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-reduce-type-parameter\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrefer using type parameter when calling \u003ccode\u003eArray#reduce\u003c/code\u003e instead of casting\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-regexp-exec.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-regexp-exec\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce that \u003ccode\u003eRegExp#exec\u003c/code\u003e is used instead of \u003ccode\u003eString#match\u003c/code\u003e if no global flag is provided\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-string-starts-ends-with\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce the use of \u003ccode\u003eString#startsWith\u003c/code\u003e and \u003ccode\u003eString#endsWith\u003c/code\u003e instead of other equivalent methods of checking substrings\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-ts-expect-error.md\"\u003e\u003ccode\u003e@typescript-eslint/prefer-ts-expect-error\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRecommends using \u003ccode\u003e// @ts-expect-error\u003c/code\u003e over \u003ccode\u003e// @ts-ignore\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/promise-function-async.md\"\u003e\u003ccode\u003e@typescript-eslint/promise-function-async\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequires any function or method that returns a Promise to be marked async\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/require-array-sort-compare.md\"\u003e\u003ccode\u003e@typescript-eslint/require-array-sort-compare\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequires \u003ccode\u003eArray#sort\u003c/code\u003e calls to always provide a \u003ccode\u003ecompareFunction\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/restrict-plus-operands.md\"\u003e\u003ccode\u003e@typescript-eslint/restrict-plus-operands\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eWhen adding two variables, operands must both be of type number or of type string\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/restrict-template-expressions.md\"\u003e\u003ccode\u003e@typescript-eslint/restrict-template-expressions\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce template literal expressions to be of string type\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/strict-boolean-expressions.md\"\u003e\u003ccode\u003e@typescript-eslint/strict-boolean-expressions\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRestricts the types allowed in boolean expressions\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md\"\u003e\u003ccode\u003e@typescript-eslint/switch-exhaustiveness-check\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eExhaustiveness checking in switch with union type\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/triple-slash-reference.md\"\u003e\u003ccode\u003e@typescript-eslint/triple-slash-reference\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eSets preference level for triple slash directives versus ES6-style import declarations\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/type-annotation-spacing.md\"\u003e\u003ccode\u003e@typescript-eslint/type-annotation-spacing\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire consistent spacing around type annotations\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/typedef.md\"\u003e\u003ccode\u003e@typescript-eslint/typedef\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequires type annotations to exist\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/unbound-method.md\"\u003e\u003ccode\u003e@typescript-eslint/unbound-method\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforces unbound methods are called with their expected scope\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/unified-signatures.md\"\u003e\u003ccode\u003e@typescript-eslint/unified-signatures\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eWarns for any two overloads that could be unified into one by using a union or an optional/rest parameter\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eExtension Rules\u003c/h3\u003e\u003ca id=\"user-content-extension-rules\" class=\"anchor\" aria-label=\"Permalink: Extension Rules\" href=\"#extension-rules\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIn some cases, ESLint provides a rule itself, but it doesn't support TypeScript syntax; either it crashes, or it ignores the syntax, or it falsely reports against it.\nIn these cases, we create what we call an extension rule; a rule within our plugin that has the same functionality, but also supports TypeScript.\u003c/p\u003e\n\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eKey\u003c/strong\u003e: ✔️ = recommended, 🔧 = fixable, 💭 = requires type information\u003c/p\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eName\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003cth\u003e✔️\u003c/th\u003e\n\u003cth\u003e🔧\u003c/th\u003e\n\u003cth\u003e💭\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/brace-style.md\"\u003e\u003ccode\u003e@typescript-eslint/brace-style\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce consistent brace style for blocks\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/comma-spacing.md\"\u003e\u003ccode\u003e@typescript-eslint/comma-spacing\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforces consistent spacing before and after commas\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/default-param-last.md\"\u003e\u003ccode\u003e@typescript-eslint/default-param-last\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce default parameters to be last\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/dot-notation.md\"\u003e\u003ccode\u003e@typescript-eslint/dot-notation\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eenforce dot notation whenever possible\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/func-call-spacing.md\"\u003e\u003ccode\u003e@typescript-eslint/func-call-spacing\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire or disallow spacing between function identifiers and their invocations\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/indent.md\"\u003e\u003ccode\u003e@typescript-eslint/indent\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce consistent indentation\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/init-declarations.md\"\u003e\u003ccode\u003e@typescript-eslint/init-declarations\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erequire or disallow initialization in variable declarations\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/keyword-spacing.md\"\u003e\u003ccode\u003e@typescript-eslint/keyword-spacing\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce consistent spacing before and after keywords\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/lines-between-class-members.md\"\u003e\u003ccode\u003e@typescript-eslint/lines-between-class-members\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire or disallow an empty line between class members\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-array-constructor.md\"\u003e\u003ccode\u003e@typescript-eslint/no-array-constructor\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow generic \u003ccode\u003eArray\u003c/code\u003e constructors\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-dupe-class-members.md\"\u003e\u003ccode\u003e@typescript-eslint/no-dupe-class-members\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow duplicate class members\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-empty-function.md\"\u003e\u003ccode\u003e@typescript-eslint/no-empty-function\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow empty functions\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-parens.md\"\u003e\u003ccode\u003e@typescript-eslint/no-extra-parens\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow unnecessary parentheses\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-extra-semi.md\"\u003e\u003ccode\u003e@typescript-eslint/no-extra-semi\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow unnecessary semicolons\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-invalid-this.md\"\u003e\u003ccode\u003e@typescript-eslint/no-invalid-this\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow \u003ccode\u003ethis\u003c/code\u003e keywords outside of classes or class-like objects\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-loop-func.md\"\u003e\u003ccode\u003e@typescript-eslint/no-loop-func\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow function declarations that contain unsafe references inside loop statements\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-loss-of-precision.md\"\u003e\u003ccode\u003e@typescript-eslint/no-loss-of-precision\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow literal numbers that lose precision\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-magic-numbers.md\"\u003e\u003ccode\u003e@typescript-eslint/no-magic-numbers\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow magic numbers\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr
56CC
\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-redeclare.md\"\u003e\u003ccode\u003e@typescript-eslint/no-redeclare\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow variable redeclaration\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-shadow.md\"\u003e\u003ccode\u003e@typescript-eslint/no-shadow\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow variable declarations from shadowing variables declared in the outer scope\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-expressions.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unused-expressions\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow unused expressions\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-vars.md\"\u003e\u003ccode\u003e@typescript-eslint/no-unused-vars\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow unused variables\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-use-before-define.md\"\u003e\u003ccode\u003e@typescript-eslint/no-use-before-define\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow the use of variables before they are defined\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-useless-constructor.md\"\u003e\u003ccode\u003e@typescript-eslint/no-useless-constructor\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow unnecessary constructors\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/quotes.md\"\u003e\u003ccode\u003e@typescript-eslint/quotes\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforce the consistent use of either backticks, double, or single quotes\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/require-await.md\"\u003e\u003ccode\u003e@typescript-eslint/require-await\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDisallow async functions which have no \u003ccode\u003eawait\u003c/code\u003e expression\u003c/td\u003e\n\u003ctd\u003e✔️\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/return-await.md\"\u003e\u003ccode\u003e@typescript-eslint/return-await\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforces consistent returning of awaited values\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e💭\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md\"\u003e\u003ccode\u003e@typescript-eslint/semi\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eRequire or disallow semicolons instead of ASI\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-function-paren.md\"\u003e\u003ccode\u003e@typescript-eslint/space-before-function-paren\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eEnforces consistent spacing before function parenthesis\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003e🔧\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContributing\u003c/h2\u003e\u003ca id=\"user-content-contributing\" class=\"anchor\" aria-label=\"Permalink: Contributing\" href=\"#contributing\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"/runk/typescript-eslint/blob/master/CONTRIBUTING.md\"\u003eSee the contributing guide here\u003c/a\u003e.\u003c/p\u003e\n\u003c/article\u003e","errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"ESLint Plugin TypeScript","anchor":"eslint-plugin-typescript","htmlText":"ESLint Plugin TypeScript"},{"level":2,"text":"Getting Started","anchor":"getting-started","htmlText":"Getting Started"},{"level":2,"text":"Quick-start","anchor":"quick-start","htmlText":"Quick-start"},{"level":3,"text":"Installation","anchor":"installation","htmlText":"Installation"},{"level":3,"text":"Usage","anchor":"usage","htmlText":"Usage"},{"level":3,"text":"Recommended Configs","anchor":"recommended-configs","htmlText":"Recommended Configs"},{"level":2,"text":"Supported Rules","anchor":"supported-rules","htmlText":"Supported Rules"},{"level":3,"text":"Extension Rules","anchor":"extension-rules","htmlText":"Extension Rules"},{"level":2,"text":"Contributing","anchor":"contributing","htmlText":"Contributing"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Frunk%2Ftypescript-eslint%2Ftree%2Fmaster%2Fpackages%2Feslint-plugin"}},"totalCount":13,"showBranchInfobar":true},"fileTree":{"packages":{"items":[{"name":"eslint-plugin-internal","path":"packages/eslint-plugin-internal","contentType":"directory"},{"name":"eslint-plugin-tslint","path":"packages/eslint-plugin-tslint","contentType":"directory"},{"name":"eslint-plugin","path":"packages/eslint-plugin","contentType":"directory"},{"name":"experimental-utils","path":"packages/experimental-utils","contentType":"directory"},{"name":"parser","path":"packages/parser","contentType":"directory"},{"name":"scope-manager","path":"packages/scope-manager","contentType":"directory"},{"name":"shared-fixtures","path":"packages/shared-fixtures","contentType":"directory"},{"name":"types","path":"packages/types","contentType":"directory"},{"name":"typescript-estree","path":"packages/typescript-estree","contentType":"directory"},{"name":"visitor-keys","path":"packages/visitor-keys","contentType":"directory"}],"totalCount":10},"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":".vscode","path":".vscode","contentType":"directory"},{"name":"docs","path":"docs","contentType":"directory"},{"name":"packages","path":"packages","contentType":"directory"},{"name":"tests","path":"tests","contentType":"directory"},{"name":"tools","path":"tools","contentType":"directory"},{"name":".all-contributorsrc","path":".all-contributorsrc","contentType":"file"},{"name":".codecov.yml","path":".codecov.yml","contentType":"file"},{"name":".cspell.json","path":".cspell.json","contentType":"file"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".eslintignore","path":".eslintignore","contentType":"file"},{"name":".eslintrc.js","path":".eslintrc.js","contentType":"file"},{"name":".gitattributes","path":".gitattributes","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".huskyrc","path":".huskyrc","contentType":"file"},{"name":".lintstagedrc","path":".lintstagedrc","contentType":"file"},{"name":".markdownlint.json","path":".markdownlint.json","contentType":"file"},{"name":".markdownlintignore","path":".markdownlintignore","contentType":"file"},{"name":".npmrc","path":".npmrc","contentType":"file"},{"name":".prettierignore","path":".prettierignore","contentType":"file"},{"name":".prettierrc.json","path":".prettierrc.json","contentType":"file"},{"name":"CHANGELOG.md","path":"CHANGELOG.md","contentType":"file"},{"name":"CODE_OF_CONDUCT.md","path":"CODE_OF_CONDUCT.md","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"CONTRIBUTORS.md","path":"CONTRIBUTORS.md","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"lerna.json","path":"lerna.json","contentType":"file"},{"name":"package.json","path":"package.json","contentType":"file"},{"name":"tsconfig.base.json","path":"tsconfig.base.json","contentType":"file"},{"name":"tsconfig.eslint.json","path":"tsconfig.eslint.json","contentType":"file"},{"name":"yarn.lock","path":"yarn.lock","contentType":"file"}],"totalCount":32}},"fileTreeProcessingTime":20.474086999999997,"foldersToFetch":[],"treeExpanded":true,"symbolsExpanded":false,"csrf_tokens":{"/runk/typescript-eslint/branches":{"post":"RoQElULzJNZJswcaIsbJU5luID4Y32kgtjOBNQ442rwMK3apuKW6GqguudqhqhnwZNyfoHPdjWwxdAMYoL5txw"},"/runk/typescript-eslint/branches/fetch_and_merge/master":{"post":"cI66JiSYYDmY2W2327ccVAL8dSZGJLWPkqO6RAFshlwKd-XTc455Q3SQRH-uzNneXJ4Qgidlf3KQcgmzLLPhwA"},"/runk/typescript-eslint/branches/fetch_and_merge/master?discard_changes=true":{"post":"NLfVJHFL1Eo1iuwW7E4FrWG3NVfPiTaE7w_UF_3zwRROTorRJl3NMNnDxd6ZNcAnP9VQ867I_Hnt3mfg0CymiA"}}},"title":"typescript-eslint/packages/eslint-plugin at master · runk/typescript-eslint","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1ae9fa256942.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true,"github_models_repo_integration":false}}}