Closed hyeyoonS closed 3 months ago
ps. 타입스크립트가 런타임에 어떤 식으로 동작하는지 알아보며 들었던 생각을 말씀드리겠습니다.
런타임에 타입스크립트는 enum가 같은 특수한 타입 시스템을 제외하고 객체로 남지 않고 모두 사라집니다. 이를 통해 컴파일 과정을 거치게 되면 타입 정보들은 JavaScript 파일에 포함되지 않고 메모리에는 JavaScript의 값 및 객체들만 존재한다고 생각되어 타입과 변수를 같은 이름으로 정의해도 오류가 발생하지 않는다고 생각합니다.
❓문제
타입과 변수를 같은 이름으로 정의할 수 있습니다. 그 이유는 무엇일까요?
🎯답변
type
으로 선언한 내용은 자바스크립트 런타임에서 제거됩니다.값 공간과 타입 공간은 서로 충돌하지 않기
때문에, 타입과 변수를 같은 이름으로 정의할 수 있습니다.예외)
Class
변수명 me 뒤에 등장하는 : Developer에서 Developer는 타입에 해당하지만, new 키워드 뒤의 Developer는 클래스의 생성자 함수인 값으로 동작합니다.
⇒ 타입스크립트에서 클래스는 타입 애너테이션으로 사용할 수 있지만, 런타임에서 객체로 변환되어 자바스크립트의 값으로 사용되는 특징을 가지고 있습니다.