3 преимущества OOP-подхода в Express.js с TypeScript
Что дает TypeScript
TypeScript обеспечивает строгую систему типизации для проектов JavaScript и избавляет программистов от ошибок при написании кода. Кроме того, он позволяет использовать стиль объектно-ориентированного программирования (OOP), предоставляя классы «Interface» и «Abstract».
Не только для клиентской части
Использование TypeScript стало популярным на стороне клиента, но оно также применимо к серверному JavaScript. Express.js — это веб-фреймворк Node.js, среды выполнения, которая позволяет кодам JavaScript работать на стороне сервера, а TypeScript также используется с Express.
Общий стиль Express
Типичный экспресс-код написан в стиле функционального программирования, так как он сразу принимает функцию обратного вызова.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello world');
});
Но когда вы используете TypeScript, вы можете использовать стиль на основе классов и увидеть несколько его достоинств.
3 преимущества использования TypeScript с OOP
Вот положительные преимущества использования OOP-подхода:
- Уменьшите количество объявлений типов
- Используйте шаблон проектирования
- Используйте декораторы
Уменьшите количество объявлений типов
Когда вы пишете контроллеры, вам нужно экспортировать все объявления переменных и типов. Наличие класса контроллера может объединить их.
Вот пример:
controller/users.ts
export class UsersController {
public async createUser(req: Request, res: Response) {
const user = new User(req.body);
await user.save();
res.status(201).send(user);
}
public async fetchUsers(req: Request, res: Response) {
const users = await User.find({});
res.status(200).send(users);
}
}
Маршрутизатор должен знать, что контроллер — это UsersController, и определить его тип.
routes/users.ts
import { Router } from 'express';
import { UsersController } from '../controllers/users';
const router = Router();
const usersController = new UsersController();
router.get('/', usersController.fetchUsers);
router.get('/create', usersController.createUser);
Вы также можете создать класс маршрутизатора.
Шаблоны проектирования
Шаблоны проектирования — это распространенные шаблоны решений при разработке программного обеспечения, они идут с OOP.
- Шаблоны проектирования GoF
- Шаблон проектирования DAO
Декораторы
Декоратор — это объявление особого типа, которое может быть присоединено к объявлению класса, методу, методу доступа, свойству или параметру.
Декораторы — это специальность TypeScript, основанная на подходе OOP. Например, вы можете выполнить некоторые процессы до создания экземпляра класса.
const Something = (constructor: Function) => {
console.log('Some functions before the class instantiate');
}
@Something
class User {
constructor(name: string) {
console.log(`User ${name} is created`);
}
}
const user1 = new User('user2');
const user2 = new User('user1');
Выход
Вы можете установить более одного декоратора.
Вывод
Вы можете максимально использовать OOP и уникальные функции TypeScript в Express.
Вам также может понравиться Nest.js или Deno; Оба являются средами выполнения и изначально поддерживают TypeScript.