title: How to use ESLint TypeScript Airbnb configuration?
body: <p>I try to install and use <a href="https://www.npmjs.com/package/eslint-config-airbnb-typescript" rel="noreferrer">ESLint Airbnb configuration for TypeScript</a> for several days and I cannot make it work. Can somebody give installation and configuration steps of a working configuration, please?</p>
  
  <p>Below is one of my attempts to lint <a href="https://github.com/iwis/iw-components" rel="noreferrer">this code</a> base using Airbnb convention. </p>
  
  <p><a href="https://www.npmjs.com/package/eslint-config-airbnb-typescript" rel="noreferrer">Airbnb configuration</a> doesn't support <a href="https://github.com/typescript-eslint/typescript-eslint/" rel="noreferrer">Typescript ESLint</a> 3.0 yet, so I will install TypeScript ESLint 2.34.
  Typescript ESLint 2.34 doesn't support ESLint 7 yet, so I will install ESLint 6.x.
  Typescript ESLint 2.34 doesn't support Typescript 3.8 yet, so I will install Typescript 3.7.5.</p>
  
  <p>I install Typescript:</p>
  
  <pre><code>npm init -y
  npm i -D typescript@3.7.5 --save-exact
  </code></pre>
  
  <p>I install ESLint and TypeScript ESLint:</p>
  
  <pre><code>npm i -D eslint@6 @typescript-eslint/parser@2 @typescript-eslint/eslint-plugin@2
  </code></pre>
  
  <p>I install Airbnb configuration:</p>
  
  <pre><code>npm i -D eslint-config-airbnb-typescript@7 eslint-plugin-import@2
  </code></pre>
  
  <p>I create .eslintrc.js file with the content:</p>
  
  <pre><code>module.exports = {
    root: true,
  
    //required!; use the previously installed parser; it allows ESLint to understand
    //TypeScript syntax; it converts TypeScript into an ESTree-compatible form so it
    //can be used in ESLint
    parser: '@typescript-eslint/parser',               
  
    parserOptions: {
      project: ['./tsconfig.json'],  //required for "type-aware linting"
    },
  
    plugins: [
      //load the previously installed plugin; allows me to use the rules within my codebase
      '@typescript-eslint',
    ],
  
    extends: [  // 'eslint-config-' can be ommited ex. in eslint-config-standard      
  
      //enable all ESLint rules (for example to explore); todo: what with Typescipt?
      //'eslint:all',
  
      //ESLint's inbuilt "recommended" config - a small, sensible set of rules
      //'eslint:recommended',
  
      //disables a few of the recommended rules from the 'eslint:recommended' that
      //are already covered by TypeScript's typechecker
      //'plugin:@typescript-eslint/eslint-recommended',
  
      //Typescript ESLint "recommended" config - it's just like eslint:recommended,
      //except it only turns on rules from our TypeScript-specific plugin
      //'plugin:@typescript-eslint/recommended',
  
      //"type-aware linting" - rules reporting errors based on type information
      //recommended; takes longer if run from CMD for large project
      //see: https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/TYPED_LINTING.md
      //'plugin:@typescript-eslint/recommended-requiring-type-checking',
  
      //if I use it, then comment all above extensions i.e. 'eslint:recommended',
      //'plugin:@typescript-eslint/eslint-recommended',
      //and 'plugin:@typescript-eslint/recommended'
      'airbnb-typescript',
    ],
  
    rules: {
      //can be configured later
    }
  };
  </code></pre>
  
  <p>I try to lint my code:</p>
  
  <pre><code>D:\workspace\iw-components&gt;npx eslint . --ext .ts
  </code></pre>
  
  <p>but I get:</p>
  
  <pre><code>Failed to load plugin 'jsx-a11y' declared in '.eslintrc.js
   » eslint-config-airbnb-typescript
   » D:\workspace\iw-components\node_modules\eslint-config-airbnb\index.js
   » D:\workspace\iw-components\node_modules\eslint-config-airbnb\rules\react-a11y.js':
  Cannot find module 'eslint-plugin-jsx-a11y'
  
  Require stack:
  - D:\workspace\iw-components\__placeholder__.js
  </code></pre>