TypeScript 프로젝트 구조 & 파일 네이밍 컨벤션 (실무 기준 정리)

SihoonCho·2026년 4월 7일

TypeScript는 Java처럼 “정해진 구조”를 강제하지 않는다.
하지만 실제 프로젝트에서는 일관된 구조와 네이밍 규칙이 필수다.
이 글에서는 공식 개념 + 실무 관례를 기반으로 정리한다.


1. 📌 TypeScript 구조의 핵심: 모듈 시스템

기본 개념

파일 = 모듈

📎 공식 문서
https://www.typescriptlang.org/docs/handbook/2/modules.html

핵심:

import/export가 존재하면 해당 파일은 모듈로 동작한다


Java vs TypeScript

JavaTypeScript
클래스 중심파일(모듈) 중심
패키지 구조자유 구조
상속 기반조합 기반

👉 결론:

TypeScript는 “파일의 역할” 중심으로 구조를 설계해야 한다

2. 📦 실무에서 가장 많이 쓰는 디렉토리 구조

기본 구조

src/
  main.ts
  config/
  modules/
    user/
      user.controller.ts
      user.service.ts
      user.repository.ts
      user.entity.ts
  shared/
    utils/
    errors/

구조 특징

  • feature-based 구조
  • 도메인 중심 구성
  • 역할별 파일 분리

3. 🗂️ 파일 네이밍 컨벤션 (domain.role)

규칙

<domain>.<role>.ts

예시

user.controller.ts
user.service.ts
user.repository.ts
user.entity.ts

장점

✔ 역할이 명확함

user.repository.ts → DB 접근
user.service.ts → 비즈니스 로직

✔ 정렬이 직관적

user.controller.ts
user.repository.ts
user.service.ts

✔ 파일명 충돌 방지

user.ts ❌

용어

dot-based naming
role-based naming

4. 🔤 코드 레벨 네이밍 규칙

클래스

export class UserRepository {}

👉 PascalCase


함수 / 변수

const getUser = () => {}
const userName = "john";

👉 camelCase


상수

const MAX_RETRY_COUNT = 3;

👉 UPPER_SNAKE_CASE


타입 / 인터페이스

export interface User {}
type UserStatus = "active" | "inactive";

👉 PascalCase


파일 vs 클래스

대상예시
파일user.repository.ts
클래스UserRepository

🚀 정리

1. 파일 = 모듈 (핵심 개념)
2. 구조는 자유지만 feature 기반이 일반적
3. 파일명은 domain.role 패턴 사용
4. 클래스 PascalCase, 나머지는 camelCase

📎 참고 자료


profile
개발을 즐길 줄 아는 백엔드 개발자

0개의 댓글