React

유효한 Date 객체인지 검사하는 유틸리티 함수

오아름 샘 2025. 6. 11. 08:51
반응형
export function isValidDate(d: unknown): boolean {
  return d instanceof Date && !isNaN(d.getTime());
}

상세 설명

1. d: unknown

  • 이 함수는 어떤 타입(unknown)의 값이라도 받을 수 있습니다.
  • unknown은 TypeScript에서 타입 안정성을 높이기 위해 any보다 더 안전한 타입입니다.
  • 내부에서 명확한 타입 확인을 통해 안전하게 다룰 수 있게 유도합니다.

2. d instanceof Date

  • d가 Date 클래스의 인스턴스인지 확인합니다.
  • new Date()로 생성된 객체만 true가 됩니다.
  • 문자열이나 숫자 등의 다른 값은 false입니다.

3. !isNaN(d.getTime())

  • d가 Date 객체여도 내부 값이 유효한 날짜인지 확인합니다.
  • 예: new Date('invalid')는 Date 인스턴스지만 내부적으로 Invalid Date가 되며, getTime()은 NaN을 반환합니다.
  • !isNaN(...)으로 유효한 숫자(timestamp)인지 검사합니다.

예제

isValidDate(new Date()); // ✅ true
isValidDate(new Date('2025-06-11')); // ✅ true
isValidDate(new Date('invalid')); // ❌ false
isValidDate('2025-06-11'); // ❌ false
isValidDate(null); // ❌ false
isValidDate({}); // ❌ false
 

요약

이 함수는 다음 두 가지 조건을 모두 만족해야 true를 반환합니다:

  1. 값이 Date 객체인지 (instanceof Date)
  2. 내부적으로 유효한 날짜인지 (getTime()이 NaN이 아님)
반응형