본문 바로가기
코드잇 스프린트 6기/위클리 페이퍼

[12주차] 위클리 페이퍼

by 학습하는 청년 2024. 5. 25.

최종 수정 : 2024-05-25

Q. JavaScript만 사용하는 것과 비교해 TypeScript를 사용하는 이유에 대해 설명해 주세요.

자바스크립트의 한계를 극복한다.

1) 런타임 오류

JS는 인터프리티 언어이기에 소스 코드를 한 줄씩 읽어나가면서 실행한다. 다시 말해, 코드를 실행하기 전에 코드가 올바른지 검사하지 않기 때문에 발생하는 오류인 것이다. 안정성이 떨어지는 이유중 하나이다.

 

이점에 대해, 타입스크립트는 점진적 타입 시스템인 까닭에 부분적으로 타입을 지정한 코드에 대해 타입 검사를 마친 후 프로그램을 실행할 수 있다. 따라서 런타임 에러가 발생하는 부분을 조금씩 줄여나갈 수 있다.

 

2) 동적 타입 언어

자유롭게 사용할 수 있다는 장점은 있지만 실수 가능성이 늘어난다. 자동 형변환이 발생하여 타입이 맞지 않아 런타임 에러를 야기할 수 있다.

 

이와 달리, 타입스크립트는 '정적 타입 언어'의 특성을 갖고 있다. 타입을 지정해줌으로써 프로그램이 실행하기에 앞서 타입검사를 마쳐야 한다. 또한, 자동완성 기능면에서도 뛰어난 효율성을 발휘한다. 동적 타입 언어에서는 모든 기능들이 추천되지만, 타입이 정해져 있을 때에는 그 타입에 맞는 메서드들만 추천해주기 때문에 자동완성 기능을 더 제대로 활용할 수 있다.

 

3) 객체 지향을 온전히 구현하는 데 한계가 있다.

JS는 프로토타입 기반의 객체 지향이라 전통적인 객체 지향 프로그래밍에서 기대할 수 있는 일부 기능을 지원하지 않아 객체 지향을 온전히 구현하는 데 부족함이 있다.

 

이런 제약을 극복하기 위해, 타입스크립트에서는 private과 같은 접근 제어자나 추상 클래스, 추상 메서드 같은 기능을 지원함으로써 해결해준다. 결국, 객체 지향을 구현할 수 있도록 도와주는 자바스크립트의 슈퍼셋이라 말할 수 있다.


Q. TypeScript의 동작 원리에 대해 설명해 주세요.

1. tsc 명령어를 실행하여 프로그램 객체가 컴파일 과정을 시작한다.

 

2. 스캐너는 소스 파일을 토큰 단위로 분리한다.

 

3. 파서는 토큰을 이용하여 AST를 생성한다.

 

4. 바인더는 AST의 각 노드에 대응하는 심볼을 생성한다. 심볼은 선언된 타입의 노드 정보를 담고 있다.

 

5. 체커는 AST를 탐색하면서 심볼 정보를 활용하여 타입 검사를 수행한다.

 

6. 타입 검사 결과 에러가 없다면 이미터를 사용해서 자바스크립트 소스 파일로 변환한다.


참고 자료

https://young-taek.tistory.com/281

 

타입스크립트의 객체 지향

최종 수정 : 2024-05-24타입스크립트의 객체 지향(OOP)자바스크립트는 프로토타입 기반의 객체 지향 언어로 분류된다. 그러나 전통적인 객체 지향 프로그래밍 언어에서 기대할 수 있는 일부 기능을

young-taek.tistory.com

https://young-taek.tistory.com/283

댓글