8000 typescript-eslint/packages/eslint-plugin at master · runk/typescript-eslint · GitHub
[go: up one dir, main page]

Skip to content
{"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}}}
0