🔷 타입 안전 폼 검증 시스템 구축

TypeScript 예제

중급 난이도
예제 타입
10/13 등록일

타입 안전 폼 검증 시스템 구축

중급
태그
폼 검증 타입스크립트 유효성검사 웹개발 서버/클라이언트 연동
## 프로젝트 개요
웹 애플리케이션에서 입력 필드 유효성 검사를 타입 시스템으로 보장하여 에러를 사전에 방지하는 시스템 구축

## 주요 기능
- 필수 항목 체크
- 이메일 형식 검증
- 전화번호 정규표현식 검사
- 실시간 입력 시 즉시 피드백 제공
- 사용자 친화적 에러 메시지 출력

## 사용 방법
1. HTML 폼 요소와 연결된 input 필드 생성
2. validateForm 함수 호출하여 유효성 검사 수행
3. 반환된 에러 객체를 기반으로 UI 업데이트

## 확장 가능성
- 추가 필드 타입 정의만으로 새로운 검증 로직 구현 가능
- 서버측 검증과 연동할 수 있는 인터페이스 제공
코드 예제
// 폼 데이터 타입 정의
interface FormData {
  name: string;
  email: string;
  phone: string;
}

// 유효성 검사 로직
function validateForm(data: FormData): { [key: string]: string } {
  const errors: { [key: string]: string } = {};

  // 필수 항목 체크
  if (!data.name.trim()) {
    errors.name = '이름은 필수 입력사항입니다.';
  }

  // 이메일 형식 검사
  const emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
  if (data.email && !emailRegex.test(data.email)) {
    errors.email = '올바른 이메일 형식이 아닙니다.';
  }

  // 전화번호 검사
  const phoneRegex = /^010\d{8}$/;
  if (data.phone && !phoneRegex.test(data.phone)) {
    errors.phone = '올바른 휴대폰 번호 형식이 아닙니다.';
  }

  return errors;
}

// DOM 조작 및 이벤트 핸들링
window.onload = () => {
  const form = document.getElementById('myForm') as HTMLFormElement;
  const nameInput = document.getElementById('name') as HTMLInputElement;
  const emailInput = document.getElementById('email') as HTMLInputElement;
  const phoneInput = document.getElementById('phone') as HTMLInputElement;
  const errorMessages = {
    name: document.getElementById('nameError'),
    email: document.getElementById('emailError'),
    phone: document.getElementById('phoneError')
  };

  form.addEventListener('submit', (e) => {
    e.preventDefault();
    
    const data: FormData = {
      name: nameInput.value,
      email: emailInput.value,
      phone: phoneInput.value
    };
    
    const errors = validateForm(data);
    
    // 에러 메시지 업데이트
    Object.keys(errors).forEach(key => {
      if (errorMessages[key as keyof typeof errorMessages]) {
        errorMessages[key as keyof typeof errorMessages]!.textContent = errors[key];
      }
    });
  });
};
등록일: 2025년 10월 13일 03:22
언어 정보
언어
TypeScript
카테고리
Web
인기도
#7
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요