Skip to content

express 라이브러리의 Request 인터페이스와 session 충돌 문제와 해결 #17

@DreamBoysYJ

Description

@DreamBoysYJ

문제 상황

image
타입스크립트로 express를 이용한 컨트롤러(라우팅 핸들러)를 작성할 때는, req, res, next 에 타입을 지정해줘야 하고, 이를 express 라이브러리가 제공하는 Request, Response, NextFunction 인터페이스를 사용할 수 있었다.

그러나 Request 에는 session 프로퍼티가 없어, req.session 을 사용하려고 하면 해당 프로퍼티가 없다고 찡찡댄다.

이는 'express-session', @types/express-session 을 설치하면 자동으로 express의 Request 인터페이스에 session 프로퍼티를 만들어준다.

image

만약 내가 req.session 내부에 user, loggedIn이라는 새로운 프로퍼티를 만들고 데이터를 넣고 싶다면?

당연히 안된다. user, loggedIn는 내가 만든 변수니, Request.session에 타입이 없을 것이기 때문이다.

어떻게 할 것인가? 직접 라이브러리 타입 파일에 들어가 user, loggedIn를 추가할 것인가?

문제 해결

image

우리가 원하는 건 Request 인터페이스를 유지하면서 + user, loggedIn 타입만 추가하는 것이니,
상속 기능을 이용해 만들 수 있었다.

이렇게 하면 라이브러리 파일도 안 건드리면서, 새로운 프로퍼티를 추가한 인터페이스를 사용할 수 있다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesterrorerror handling

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions