
Гид:
Часть 1:Запуск проекта и настройка минимального REST API NodeJS
Часть 2: Организация проект, добавление маршрутов, контроллеров и изолированного сервера
Часть 3(вы здесь):Добавить поддержку typescript + рефакторинг всего кода javascript в typescript и ES6
Часть 4:Изучите парадигму CRUD, реализуйте ее в NodeJS и протестируйте с помощью CURL
Брифинг
В этой статье мы начнем добавлять поддержку Typescript в наше приложение NodeJS и рефакторинг предыдущего кода.
Чему вы научитесь?
В этой статье вы узнаете, как добавить поддержку машинописного текста в приложение NodeJS и провести рефакторинг предыдущего кода с синтаксисом ES6+ и структурировать проект с помощью Typescript.
Давайте начнем
Добавьте TypeScript в качестве зависимости разработчика
yarn add typescript -D
Добавить @types для машинописного текста
yarn add @types/node -D
Настройте Typescript с помощью tsconfig.json
Внутри корневого каталога в вашем терминале запустите:
tsc --init
Это может создать файл tsconfig.json. Давайте отредактируем этот файл конфигурации, чтобы включить необходимую опцию для запуска Typescript:
В tsconfig.json в параметрах компилятора измените параметр target с ES5 на ES6.
"target": "es6",
Настройте скрипт npm для запуска сервера с машинописным текстом + следите за изменениями файла
Прежде всего, давайте добавим библиотеку ts-node-dev для запуска в режиме разработки и просмотра изменений файлов.
yarn add ts-node-dev -D
В package.json настройте пользовательский скрипт со следующими дополнительными параметрами:
- — возрождение: команда по умолчанию
- — очистить: очистит экран (терминал) при перезапуске.
- — ignore-watch: файлы/папки, которые будут игнорироваться node-dev.
- — только для переноса: рассмотрите возможность использования этого флага, который является нормальным для рабочего процесса разработки и значительно ускорит работу.
В package.json создайте параметры scripts и добавьте команду dev.
"scripts": {
"dev": "ts-node-dev --respawn --clear --transpile-only --ignore-watch node_modules src/server.js"
},
Теперь вы можете запустить сервер. Запустите из корневой папки команду:
// if you use yarn yarn dev // if you use npm npm run dev
После запуска сервера ваш терминал должен выглядеть так:

На данный момент у вас уже есть поддержка машинописного текста, среда и просмотр файлов в вашем приложении. Это означает, что теперь вам больше не нужно перезапускать сервер вручную. Флаг —watch из ts-node будет перезапускать сервер каждый раз при изменении файла.
Обновите файлы javascript до typescript.
Теперь, когда наш. проект поддерживает машинопись, давайте изменим расширения файлов с javascript (.js) на машинопись (.ts). Обновите расширения файлов, переименовав файлы следующих файлов:
- /src/app.js=› app.ts
- /src/server.js =› server.ts
- /src/routes.js =› routes.ts
- /src/controllers/global.js =› global.ts
- /src/routes/global.js =› global.ts
Теперь ваши файлы должны выглядеть так:
Рефакторинг/Обновление кода
Обратите внимание, что ваш редактор кода, вероятно, предупредил вас о некоторых проблемах с импортом/экспортом и синтаксисом. Это потому, что теперь наш проект ожидает, помимо машинописного кода, современный синтаксис, такой как импорт/экспорт вместо require и module.exports. Давай исправим.
Обновление app.ts
При использовании машинописного текста, если в библиотеке нет встроенных типов, нам нужно добавить их отдельно. Добавим экспресс-типы:
yarn add @types/express -D
Измените с требовать синтаксис на синтаксис импорта. Ваш код app.ts должен выглядеть так:
import express from 'express' // import our local router file import routes from './routes' // init express app const app = express() // allow express to work with json app.use(express.json()) // router app.use(routes) // export app to import into server.js export default app
Обновление server.ts
Здесь единственное, что нам нужно изменить, это синтаксис require для импорта. Итак, ваш файл server.ts должен выглядеть так:
import app from './app'
const PORT = 3000
app.listen(PORT, () => console.log("Server is running at PORT 3000 🚀"))
Обновление route.ts
Измените синтаксис require для импорта и измените module.exports на экспорт по умолчанию. Ваш файл route.ts должен выглядеть так:
import globalRoute from './routes/global' const routes = [globalRoute] export default routes
Обновление /controllers/global.ts
Измените экспорт модуля. И, возможно, ваш редактор кода предупреждает о типах параметров req, res. А пока, поскольку мы не собираемся беспокоиться о правильности ввода в этой статье, добавим к ним тип any. После этого ваш код должен выглядеть так:
const globalControllers = {
healthyCheck(req: any, res: any) { res.send('<h2>API is running</h2>') }
}
export default globalControllers
Обновление /routes/global.ts
Измените синтаксис require для импорта и измените module.exports на экспорт по умолчанию. Ваш файл маршрутов global.ts должен выглядеть следующим образом:
import express from 'express'
import globalController from './../controllers/global'
const router = express.Router()
// your routes paths and methods
// single basic route at the base path of your application
router.get('/', globalController.healthyCheck)
export default router
Обновить скрипт разработчика в package.json
Команда dev в сценариях пытается запустить файл server.js вместо server.ts. Итак, исправим. Ваш скрипт разработки должен выглядеть так:
"scripts": {
"dev": "ts-node-dev --respawn --clear --transpile-only --ignore-watch node_modules src/server.ts"
},
После этого ваш терминал должен выглядеть так.

Теперь у нас есть работающий, структурированный сервер, поддерживающий машинописный текст и синтаксис ES6, а также с автоматическим перезапуском с просмотром файлов из ts-node-dev.
В следующих статьях мы создадим маршруты, функционал, CRUD, подключимся к MongoDB, создадим систему аутентификации и многое другое. Увидимся в следующей статье, следите за новостями!