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를 반환합니다:
- 값이 Date 객체인지 (instanceof Date)
- 내부적으로 유효한 날짜인지 (getTime()이 NaN이 아님)
반응형