1. Во-первых, игнорируйте папку docs, если вы не хотите, чтобы документы находились в репозитории, добавив:
/docs to .gitignore file

2. Создайте файл jsdoc.conf.json со следующим содержимым:

{
    "tags": {
      "allowUnknownTags": true,
      "dictionaries": ["jsdoc", "closure"]
    },
    "source": {
      "include": ["src"],
      "includePattern": "\\.(jsx|js|ts|tsx)$",
      "excludePattern": "(^|\\/|\\\\)_"
    },
    "plugins": ["plugins/markdown", "better-docs/component", "better-docs/typescript"],
    "templates": {
      "better-docs": {
        "name": "Your App Name"
      }
    },
    "opts": {
      "destination": "docs",
      "recurse": true,
      "readme": "README.md"
    }
  }

3. Установите два модных пакета:

yarn add better-docs
yarn add jsdoc

or:

npm install better-docs
npm install jsdoc

4. Добавьте скрипт для генерации документов:

В раздел скриптов файла package.json добавьте:

"docs": "jsdoc -c jsdoc.conf.json"

5. Если вы используете Tslint, игнорируйте документы из проверки:

"linterOptions": {
      "exclude": [
        ...
        "docs"
      ]
    },

6. Отметьте все, что вы хотите видеть в документации, хотя бы пустым тегом jsdoc:

/**
 * 
 */
export const ...

7. Отметьте модуль для каждого файла, который что-то экспортирует, потому что jsdoc неправильно генерирует модули на основе пути:

/**
 * @module scenes/Scene1/Button
 */
.... rest of the file

8. Создайте документацию с помощью:

yarn run docs

or:

npm run docs

9. Обратите внимание, что не все члены генерируются внутри соответствующих модулей, которые вы определили, они перейдут в глобальные интерфейсы и глобальные члены.

10. Переместите комментарий к определению модуля ниже импорта и введите определения:

imports ....
type definitions
/**
 * @module scenes/Scene1/Button
 */

Снова запустите сборку документов с помощью восьмого шага. И ваши документы готовы.

Пс. Если вы знаете, как его улучшить, дайте мне знать в комментариях!