아이템 08. 타입 공간과 값 공간의 심벌 구분하기 (Todo)

아이템 08. 타입 공간과 값 공간의 심벌 구분하기 (Todo)

아이템 8. 타입 공간과 값 공간의 심벌 구분하기 #

타입스크립트의 심벌(symbol)은 타입 공간, 값 공간 중 한 곳에 존재한다.

쉽게 말하면, 같은 네이밍을 가진 심벌은 타입이 될 수도, 값이 될 수도 있다는 의미이다.

// 'Cylinder' 라는 심볼은 '타입'이다.
interface Cylinder {
    radius: number;
    height: number;
}

// 'Cylinder' 라는 심볼은 '값'이다.
const Cylinder = { radius: number, height: number} => ({ radius, height });

한 심벌이 ‘타입’인지, ‘값’인지 알기 위해서는 ‘문맥’을 살펴 알아냐애 한다.

이 부분은 혼란을 야기하곤 한다.

키워드설명
type타입
interface타입
const
let
class타입 / 값
enum타입 / 값



연산자 중 ‘타입’에서 쓰일 때, ‘값’에서 쓰일 때 다른 기능을 하는 것들이 있다. #

typeof 예시를 살펴본다.

type T1 = typoof p;     // 타입 : Person
type T2 = typeof email; // 타입 : (p: Person, subject: string, body: string) => Response

const v1 = typeof p;    // 값 : "object"
const v2 = typeof email;// 값 : "function"
  • ‘타입’ 관점 → 타입스크립트 ‘타입’ 을 반환

  • ‘값’ 관점 → 자바스크립트 런타임의 typeof 연산자 (= 런타임 타입을 가리키는 문자열 반환, 타입스크립트 타입과는 다르다.)

* 타입스크립트 타입은 무수히 많다. (사용자가 계속해서 정의 가능)
* 자바스크립트 타입은 단 6개이다. (런타임타입 : string, number, boolean, undefined, object, function)


작성중…



요약 #