프로그래밍/Typescript

타입스크립트에서의 Null과 Undefined: 차이점과 활용법

shimdh 2025. 4. 2. 09:22
728x90

타입스크립트는 JavaScript의 상위 집합으로, 정적 타입을 지원하여 코드의 안정성을 높이는 데 기여합니다. 이 과정에서 nullundefined라는 두 가지 중요한 기본 타입이 등장하는데, 이들은 프로그래밍의 기초를 이루는 요소입니다. 이번 포스트에서는 이 두 타입의 정의, 차이점, 그리고 타입스크립트에서의 활용 방법에 대해 자세히 알아보겠습니다.

1. Null

정의

null은 변수나 객체가 "없음"을 명시적으로 나타내기 위해 사용됩니다. 이는 개발자가 특정 값이 존재하지 않음을 의도적으로 표현하고자 할 때 사용됩니다. 예를 들어, 데이터베이스에서 특정 필드가 비어 있을 때 null을 사용하여 그 상태를 명확히 할 수 있습니다.

사용 예

let myVariable: string | null = null;

if (myVariable === null) {
    console.log("변수는 현재 null입니다.");
}

위의 코드에서는 myVariable이 처음에 null로 설정되어 있으며, 이를 체크하여 출력할 수 있습니다. 이처럼 null은 변수가 의도적으로 비어 있음을 나타내는 데 유용합니다.

2. Undefined

정의

undefined는 변수가 선언되었지만 값이 할당되지 않았을 때 자동으로 주어지는 값입니다. 이는 변수의 초기값이 설정되지 않았음을 의미하며, 프로그래밍에서 변수의 상태를 확인할 때 중요한 역할을 합니다. 예를 들어, 함수의 매개변수로 전달되지 않은 값이 있을 때 undefined가 반환됩니다.

사용 예

let anotherVariable: string;

console.log(anotherVariable); // undefined

anotherVariable = "Hello TypeScript!";

console.log(anotherVariable); // Hello TypeScript!

위 코드에서는 anotherVariable이 선언만 되었고 값은 할당되지 않아 첫 번째 출력 시에는 undefined라는 결과가 나옵니다. 이는 변수가 초기화되지 않은 상태를 명확히 보여줍니다.

3. 차이점 요약

  • null: 개발자가 의도적으로 값을 비워두기를 원할 때 사용합니다. 이는 명시적인 의도를 담고 있습니다.
  • undefined: 변수가 선언되었지만 아직 값을 할당받지 않았을 때 자동으로 부여되는 상태로, 초기화되지 않은 변수를 나타냅니다.

4. 타입스크립트에서의 활용

타입스크립트에서는 이러한 두 가지 타입을 더욱 안전하게 다룰 수 있도록 다양한 기능을 제공합니다:

1. strictNullChecks 옵션 활성화

이 옵션을 활성화하면, 함수나 변수에서 명시적으로 처리하지 않는 한, null이나 undefined를 허용하지 않습니다. 이는 코드의 안정성을 높이고, 예기치 않은 오류를 방지하는 데 큰 도움이 됩니다.

예제

function greet(name: string | null) {
    if (name === null) {
        console.log("안녕하세요! 이름이 없습니다.");
    } else {
        console.log(`안녕하세요! ${name}님.`);
    }
}

greet(null);      // 안녕하세요! 이름이 없습니다.
greet("홍길동");  // 안녕하세요! 홍길동님.

2. Union Types 활용

여러 타입을 조합하여 사용할 수 있는 유연성을 제공합니다. 이를 통해 개발자는 다양한 데이터 타입을 안전하게 처리할 수 있습니다. 예제처럼 문자열 또는 널 값을 받을 수 있는 함수를 정의함으로써 보다 안전한 코드를 작성할 수 있습니다.

결론

타입스크립트를 사용할 때, 특히 데이터의 유효성을 확인하고 오류를 줄이는 데 있어 nullundefined, 그리고 그 차이를 이해하는 것은 매우 중요합니다. 이러한 개념들을 잘 이해하고 활용하면 더 견고하고 신뢰성 높은 코드를 작성하는 데 큰 도움이 됩니다. 따라서 개발자는 이 두 가지 타입을 적절히 사용하여 코드의 가독성과 유지보수성을 높이는 데 기여해야 합니다.

728x90