TypeScript를 사용한 Express.js의 OOP 접근 방식의 3가지 좋은 점

TypeScript가 가능하게 하는 것



TypeScript는 JavaScript 프로젝트를 위한 엄격한 타이핑 시스템을 제공하고 코딩 중 오류로부터 프로그래머를 구합니다. 또한 'Interface'와 'Abstract' 클래스를 부여하여 OOP(Object-Oriented Programming) 스타일의 사용을 가능하게 한다.

클라이언트 측뿐만 아니라



TypeScript 사용은 클라이언트 측에서 널리 사용되었지만 서버 측 JavaScript에도 적용할 수 있습니다. Express.js는 JavaScript 코드가 서버 측에서 작동할 수 있도록 하는 런타임 환경인 Node.js의 웹 프레임워크이며 TypeScript도 Express와 함께 사용됩니다.

Express의 일반적인 스타일



일반적인 Express 코드는 한 번에 콜백 함수를 취하기 때문에 함수형 프로그래밍 스타일로 작성됩니다.

const express = require('express');
const app = express();
app.get('/', (req, res) => {
  res.send('Hello world');
});


그러나 TypeScript를 사용하면 클래스 기반 스타일을 활용할 수 있고 여러 가지 장점을 볼 수 있습니다.

TypeScript를 OOP와 함께 사용할 때의 3가지 이점



다음은 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 디자인 패턴
  • 다오디자인패턴

  • 데코레이터



    A Decorator is a special kind of declaration that can be attached to a class declaration, method, accessor, property, or parameter.
    From TypeScript Official Site
    Decorators are TypeScript specialty, and it is based on the OOP approach. For example, you can execute some processes before a class instance is generated.



    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');
    


    출력은


    둘 이상의 데코레이터를 설정할 수 있습니다.

    결론



    Express에서 TypeScript의 고유한 기능과 OOP를 최대한 활용할 수 있습니다.
    Nest.js 또는 Deno도 좋아할 수 있습니다. 둘 다 런타임 환경이며 기본적으로 TypeScript를 지원합니다.

    좋은 웹페이지 즐겨찾기