Skip to content

Conversation

@jyeon03
Copy link
Collaborator

@jyeon03 jyeon03 commented Jun 22, 2025

요구사항

기본 요구사항

공통

  • Github에 위클리 미션 PR을 만들어 주세요.

  • React 및 Express를 사용해 진행합니다.

  • TypeScript를 활용해 프로젝트의 필요한 곳에 타입을 명시해 주세요.

  • any 타입의 사용은 최소화해 주세요.

  • 복잡한 객체 구조나 배열 구조를 가진 변수에 인터페이스 또는 타입 별칭을 사용하세요.

  • Union, Intersection, Generics 등 고급 타입을 적극적으로 사용해 주세요.

  • 타입 별칭 또는 유틸리티 타입을 사용해 타입 복잡성을 줄여주세요.

  • 타입스크립트 컴파일러가 에러 없이 정상적으로 작동해야 합니다.

백엔드

  • 기존 Express.js 프로젝트를 타입스크립트 프로젝트로 마이그레이션 해주세요.
  • tsconfig.json 파일을 생성하고, 필요한 컴파일러 옵션을 설정해야 합니다. (예: outDir).
  • TypeScript 관련 명령어를 package.json에 설정해 주세요. (예: 빌드 및 개발 서버 실행 명령어).
  • ts-node와 nodemon을 사용하여 개발 환경을 구성합니다.
  • nodemon과 함께 ts-node를 사용하여 . ts 파일이 변경될 때 서버를 자동으로 재시작하도록 설정합니다.
  • Mongoose나 Prisma 등 ORM을 사용하는 경우, 모델에 대한 인터페이스 또는 타입을 정의합니다.
  • 필요한 경우, declare를 사용하여 타입을 오버라이드하거나 확장합니다.

주요 변경사항

스크린샷

image

멘토에게

  • 셀프 코드 리뷰를 통해 질문 이어가겠습니다.

@jyeon03 jyeon03 requested review from basilry and loquemedalagana and removed request for loquemedalagana June 22, 2025 17:03
@jyeon03 jyeon03 changed the title fix: ts로 리팩토링 [백지연] sprint11 Jun 22, 2025
Copy link
Contributor

@basilry basilry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오, 매우 잘하셨습니다.

백엔드는 실무 경력이 있으신 것 같은 정도인데요??

크게 제가 손 댈 곳이 없었습니다. 앞으로도 백엔드는 이 정도로 하시면 될 것 같네요!

### 자유게시글 생성
POST http://localhost:5050/article
Authorization: Bearer {{Token}}
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiZW1haWwiOiJiamx5ZW9uMkBuYXZlci5jb20iLCJuYW1lIjoi7YWM7Iqk7Yq47Jyg7KCAOSIsImlhdCI6MTc1MDYxMDg2MywiZXhwIjoxNzUwNjE0NDYzfQ.cDvZ4hmyDLWGEj-7BULD5oBswX7DQZX_WdeRjSJQ7RY
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오마이갓 토큰 하드코딩 안됩니다!

const authorId = (req as any).auth?.id;

if (!authorId) {
res.status(401).json({ message: "로그인이 필요합니다." });
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이런 메시지들은 enum으로 ts 파일에 하나 몰아서 관리해두는 것도 나쁘지 않습니다.

아, 확인해보니 types/errors.ts에 기초적인 형태를 구성해두셨네요.

위치를 조금 옮기시죠. types가 아니라 src/lib/constants/.. 폴더 정도가 맞을 것 같습니다.

async function getById(id: number): Promise<any> {
const getProduct = await prisma.product.findUnique({
where: { id: parseInt(id, 10) },
where: { id: parseInt(id.toString(), 10) },
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

parseInt보다 Number가 메모리 덜 잡아먹고 빠릅니다.

그리고 기본적으로 parseInt는 두 번째 파라미터에 숫자를 안쓰면 10진수를 변환합니다.

@basilry basilry merged commit ceda1de into codeit-sprint-fullstack:express-백지연 Jun 24, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants