공부공부/JS 딥다이브

[js 딥다이브] 33장 Symbol

고생쨩 2024. 2. 15. 08:48
728x90

8주차

symbol

유일한 프로퍼티 키를 만들기 위해 사용

const mySymbol1 = Symbol('mySymbol');
const mySymbol2 = Symbol('mySymbol');
console.log(mySymbol1 === mySymbol2);

심벌과 상수

// 위, 아래, 왼쪽, 오른쪽을 나타내는 상수를 정의한다.
// 중복될 가능성이 없는 심벌 값으로 상수 값을 생성한다.
const Direction = {
 UP: Symbol('up'),
 DOWN: Symbol('down'),
 LEFT: Symbol('left'),
 RIGHT: Symbol('right')
};
const myDirection = Direction.UP;
if (myDirection === Direction.UP) {
 console.log('You are going UP.');
}

typescript test
참고 : ts에서 enum은 트리쉐이킹(사용하지 않는 코드를 삭제하는 기능)이 안되서 아래와 같이 작성함

//ts
const MOBILE_OS = {
  IOS: Symbol('iOS'),
  Android: Symbol('Android')
} as const;
type MOBILE_OS = typeof MOBILE_OS[keyof typeof MOBILE_OS]; // 'iOS' | 'Android'

//변환된 js -> Good
const MOBILE_OS = {
    IOS: Symbol('iOS'),
    Android: Symbol('Android')
};

다른 사용법은 글쎄?

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.