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

Was this helpful?