본문 바로가기
프론트엔드/TS 공부

[팀미팅 질문] null 타입과 undefined 타입의 차이점과 용례는 무엇인가?

by 학습하는 청년 2024. 5. 29.

최종 수정 : 2024-05-29

null 타입과 undefined 타입의 차이점

자바스크립트와 마찬가지로 null은 값이 없음을 명시할 때, undefined는 선언은 됐으나 값이 할당되지 않았을 때 사용됩니다.

 

TypeScript는 null과 undefined라는 타입이 존재하며, 각각 null과 undefined라는 값을 갖는다. 그 자체로는 유용하지는 않다.

null type

null은 Object 자료형을 갖고 있다.

의도적인 빈 값을 의미하며, 개발자가 의도적으로 값을 비어 두고 싶을 때 사용하는 값이다.

 

undefined type

변수를 선언할 때 값을 할당하지 않으면 기본적으로 할당되는 초기값이다. 

function foo() {
  // if Something
  return { a: 1, b: 2}
  // else
  return { a: 1, b: undefined}
}

명시적으로 undefined를 사용하는 것보다 타입 주석(옵셔널)을 사용하는 것이 낫다.

function foo(): { a: number; b?: number } {
  // if Something
  return { a: 1, b: 2}
  // else
  return { a: 1}
}

 

타입스크립트에서는 null과 undefined를 타입으로 정의할 수 있다. 또한 타입스크립트 설정 파일의 strict 옵션에 따라서 사용 여부가 결정된다. strict 옵션이 꺼져 있을 때는 신경 쓰지 않아도 되는 타입이다.

자바스크립트에서는 let numA = null; 과 같이 선언해도 허용이 되지만, 타입스크립트에서는 null과 undefined라는 타입이 존재하므로 불가능하다.

하지만 tsconfig.json에서 "strictNullChecks" : false로 설정하면 가능하다.

 


참고 자료

https://radlohead.gitbook.io/typescript-deep-dive/recap/null-undefined

 

Null vs. Undefined | TypeScript Deep Dive

자바스크립트와 타입스크립트에는 두가지 타입이 있습니다. null과 undefined는 다른것들을 의미합니다. null과 undefined 둘중 하나를 확인 다음은 자바스크립트의 ==를 이용해서 null과 undefined를 비교

radlohead.gitbook.io

 

댓글