В последнее время я увлекаюсь Typescript и интегрирую его во все свои проекты и рабочие процессы. Честно говоря, с Gatsby это так же просто, как установить плагин, но я подумал, что задокументирую минимальные нюансы, которые есть в этом процессе.

  1. Установите Typescript, типизацию для React/Node, ESLint (и конфигурацию по умолчанию + красивую интеграцию) и, наконец, плагин Gatsby для поддержки Typescript:
npm i typescript gatsby-plugin-typescript
npx install-peerdeps --dev eslint-config-airbnb
npm install --save-dev @types/react @types/react-dom @types/node eslint eslint-config-prettier eslint-plugin-prettier
  1. Добавьте следующий плагин в свой gatsby-config.js:
module.exports = {
   // ...,
   plugins: [...`gatsby-plugin-typescript`],
}
  1. Добавьте скрипты линтинга и проверки типов в свой package.json:
{
  "scripts": {
    "lint": "eslint . --ext ts --ext tsx'",
    "test": "npm run type-check && npm run lint",
    "type-check": "tsc --pretty --noEmit"
  },
}
  1. Создайте tsconfig.json в корне вашего проекта. Я взял свой отсюда, но на Github полно ссылок (вот так):
{
  "compilerOptions": {
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "baseUrl": "./src",
    "jsx": "react",
    "lib": ["dom", "esnext", "es2015", "es2016", "es2017"],
    "moduleResolution": "node",
    "noImplicitAny": false,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "plugins": [
      {
         "name": "typescript-styled-plugin"
      }
    ],
    "target": "es2015"
  },
  "include": ["**/*.ts", "**/*.tsx"],
  "exclude": ["node_modules/*", "public/*"]
}

использованная литература