중급 TypeScript - 오류 처리: null 및 undefined 다루기
오류 처리: null 및 undefined 다루기
타입스크립트에서 오류 처리는 코드의 안정성과 신뢰성을 높이는 중요한 요소입니다. 특히 null
과 undefined
는 자주 발생하는 문제로, 이를 적절히 관리하지 않으면 예기치 않은 런타임 오류가 발생할 수 있습니다. 이 섹션에서는 타입스크립트에서 오류를 처리하고 null
및 undefined
를 안전하게 다루는 방법에 대해 알아보겠습니다.
1. 기본 개념
-
오류 처리: 프로그램 실행 중 발생할 수 있는 다양한 오류를 관리하는 과정입니다. 일반적으로 try-catch 문을 사용하여 예외 상황을 포착하고 적절한 조치를 취합니다.
-
null과 undefined:
- null: 의도적으로 값이 없음을 나타내는 데이터 타입입니다.
- undefined: 변수가 선언되었지만 초기화되지 않았거나 존재하지 않는 속성에 접근할 때 반환되는 값입니다.
2. null과 undefined의 차이점
- 정의
null
: 개발자가 명시적으로 "여기에 아무것도 없다"라고 설정한 상태undefined
: 변수나 속성이 아직 정의되지 않았거나 값이 할당되지 않은 상태
예를 들어:
let a: number | null = null; // 명시적으로 '없음'으로 설정
let b: number | undefined; // 초기화 되지 않아 '정의되지 않음'
3. 오류 처리 방법
타입스크립트에서 오류 처리를 위해 주로 사용하는 구조는 다음과 같습니다:
-
try-catch 문
function divide(a: number, b: number): number { try { if (b === 0) throw new Error("0으로 나눌 수 없습니다."); return a / b; } catch (error) { console.error(error.message); return NaN; // 실패 시 NaN 반환 } } console.log(divide(10, 0)); // "0으로 나눌 수 없습니다."
-
Optional Chaining (
?.
)Optional chaining은 객체의 깊은 속성에 접근할 때, 해당 속성이 존재하지 않을 경우 에러 없이
undefined
를 반환하도록 도와줍니다.interface User { name?: string; age?: number; } const user: User = { name: "Alice" }; console.log(user.age?.toString()); // undefined (age가 없으므로)
-
Nullish Coalescing Operator (
??
)이 연산자는 좌측 피연산자가
null
또는undefined
일 때만 우측 피연산자를 반환합니다.let username = null; let defaultName = "Guest"; let displayName = username ?? defaultName; console.log(displayName); // "Guest"
4. 사용자 정의 타입 가드
사용자 정의 타입 가드는 특정 조건을 통해 변수가 어떤 타입인지 확인하는 기능을 제공합니다.
function isNonNull<T>(value: T | null): value is T {
return value !== null;
}
const data: string | null = getData();
if (isNonNull(data)) {
console.log(data.toUpperCase()); // data가 non-null일 경우 호출 가능
} else {
console.warn("데이터가 없습니다.");
}
결론
타입스크립트에서 올바른 오류 처리와 함께 null
, undefined
값을 안전하게 다루는 것은 매우 중요합니다. 이러한 기술들을 활용하면 코드를 더 견고하고 유지 보수하기 쉬운 형태로 만들 수 있습니다. 위에서 소개한 기법들을 바탕으로 실제 프로젝트에서도 적극 활용해 보세요!