Переводим на TypeScript наш Node.js/EXPRESS

В предыдущих статьях я рассказал как написать простенький сервер.

JavaScript это язык с динамической типизацией. Это полезно тем, что позволяет писать код более легко. Но, разработчики должны уделять больше внимания типам аргументов, которые нужны в функции, а также какое значение должно возвращаться. Любой более-менее крупный проект пишется на TypeScript.

ЗДЕСЬ И ДАЛЕЕ МЫ БУДЕМ ПИСАТЬ ТОЛЬКО НА TYPESCRIPT

Разветвление проекта на js и ts c помощью git

Чтобы не потерять версию js давайте ее оставим в отдельной ветке.

Создаем две ветки:

$ git checkout -b "jsDevelop"

$ git checkout -b "tsDevelop"

JS ветка у нас останется с js версией. Её мы трогать не будем. Убедитесь, что находитесь в ветке TS

Переводим на TypeScript наш Node.js/EXPRESS

Инициализация TypeScript

$ npm install -D typescript @types/node @types/express

Флаг -D или --save-dev означает установку для разработки devDependencies.

Переводим на TypeScript наш Node.js/EXPRESS

Далее нам надо инициализировать файл конфигурации tsconfig.json:

$ npx tsc --init

Переводим на TypeScript наш Node.js/EXPRESS

Меняем содержимое файла на базовый код любого проекта

Переводим на TypeScript наш Node.js/EXPRESS

Далее меняем скрипты в package.json для этого устанавливаем модуль перезапуска при изменении любого из файлов:

$ npm i -D ts-node-dev

$ npm install -D tsconfig-paths

Меняем вызов скрипта на

"scripts": {"dev": "ts-node-dev --respawn --transpile-only --exit-child -r tsconfig-paths/register src/server.ts" },

Убираем "type": "module",

Переводим на TypeScript наш Node.js/EXPRESS

Ну и пора закинуть server.js в src и заменить имена всех файлов js на ts и исправить ошибки в путях.

Запускаем сервер $ npm run dev

Было
Было
Стало
Стало

Добавляем типы

Переводим на TypeScript наш Node.js/EXPRESS
server.ts
server.ts
home.controller.ts
home.controller.ts
home.service.ts
home.service.ts
auth.middleware.ts
auth.middleware.ts

Ура, у нас всё работает:

Переводим на TypeScript наш Node.js/EXPRESS

Делаем коммит и слияние ветки tsDevelop с master

Переводим на TypeScript наш Node.js/EXPRESS

В ветке jsDevelop у нас остался js вариант сервера

11
2 комментария

спасибо за материал. подскажите, а когда в коде вы вызываете express(), vscode предлагает импорт? почему то на составные части express подсказки на импорт срабатывают (например на request). а на сам express нет, приходится вручную прописывать. и что за расширение у вас для запросов на предпоследнем скрине?

Ответить

Для запросов к серверу я использую аддон для vscode Thunder Client

1
Ответить