Item 10 객체 래퍼 타입 피하기

Avoid Object Wrapper Types

자바스크립트에 객체 이외에 기본 타입 종류는 총 7개이다. 그리고 대응되는 래퍼 타입들이 존재한다.

  • string - String

  • number - Number

  • boolean - Boolean

  • null

  • undefined

  • symbol - Symbol

  • bigint - BigInt

기본형들은 불변(immutable)이며, 메서드를 갖지 않는다는 점에서 객체와 구분된다.

그런데 기본형인 string의 경우 메소드를 갖고 있는 것처럼 보인다.

> 'primitive'.charAt(3)
"m"

사실 charAtstring의 메서드가 아니다. 메서드를 갖는 String '객체' 타입이 정의되어 있다. JS는 기본형을 String 객체로 래핑(wrap)하고, 메서드를 호출하고, 마지막에 래핑한 객체를 버린다.

타입스크립트는 기본형과 객체 래퍼 타입을 별도로 모델링한다.

  • string - String

  • number - Number

  • boolean - Boolean

  • symbol - Symbol

  • bigint - BigInt

Summary

  • 기본형 값에 메서드를 제공하기 위해 객체 래퍼 타입이 어떻게 쓰이는지 이해해야 한다. 직접 사용하거나 인스턴스를 생성하는 것은 피하자.

  • 타입스크립트 객체 래퍼 타입은 지양하고, 대신 기본형 타입을 사용해야 한다. String 대신 string, Number 대신 number, Boolean 대신 boolean, Symbol 대신 symbol, BigInt 대신 bigint를 사용해야 한다.

Last updated