22. 자바스크립트와 타입스크립트의 차이, 장/단점에 대해 설명해주세요.
이거 컴파일과 인터프리터 개념도 같이 이해해서 설명하고 싶은데 지식 부족..! 타입스크립트는 자바스크립트가 런타임에 가서야 오류를 발생시키는 단점을 보완하기 위해, 코드 작성 시에 타입을 지정해서 안정성을 제고합니다.
👛 자바스크립트와 타입스크립트의 차이점
언어의 본질
- JavaScript : 동적(dynamic)이며 인터프리터 언어로,
변수의 타입이 런타임에 결정됨.
- TypeScript : 정적(static) 타입을 지원하는 언어로,
컴파일 시에 타입을 확인하여 오류를 미리 발견할 수 있음.
컴파일
- JavaScript : 브라우저에서 바로 실행 가능.
- TypeScript : 자바스크립트로 트랜스파일(transpile)되어야 실행 가능.
❓트랜스파일?
타입 시스템
- JavaScript : 변수에 타입을 명시하지 않음(타입 추론 없이 동작).
- TypeScript : 정적 타입 검사 기능을 제공하고, 타입을 명시할 수 있음(number, string 등).
코드 안정성
- JavaScript : 타입 에러가 런타임에 발생할 수 있어
예기치 않은 오류 발생 가능성 존재.
- TypeScript : 컴파일 시점에 오류를 미리 발견해 안정성을 높임.
개발 편의성
- JavaScript : 진입 장벽이 낮아 빠르게 학습하고 활용 가능.
- TypeScript : 대규모 프로젝트나 협업에서 더 나은 유지보수성을 제공.
⚗️ JavaScript의 장단점
장점
- 쉽고 빠르게 사용 가능 : 타입 명시 없이 바로 코딩 가능.
- 폭넓은 생태계 : 브라우저에서 바로 실행되고,
라이브러리와 프레임워크가 풍부함.
- 동적 프로그래밍 지원 : 런타임에 타입과 객체를 자유롭게 수정 가능.
단점
- 런타임 에러 발생 가능성 : 타입 체크가 없어 예기치 않은 오류를 막기 어렵다.
- 유지보수 어려움 : 대규모 프로젝트에서는 코드의 일관성을 유지하기 힘듦.
- 코드 가독성 저하 : 타입 명시가 없으므로 복잡한 코드에서 가독성이 떨어질 수 있음.
🔑 TypeScript의 장단점
장점
- 정적 타입 체크 : 컴파일 시점에 오류를 미리 발견할 수 있음.
- 자동 완성 및 코드 가이드 제공 : 타입 정보를 바탕으로 IDE의 자동 완성 기능이 향상됨.
❓IDE?
- 유지보수 용이 : 타입과 인터페이스를 명확히 정의해 코드의 일관성과 가독성을 높임.
- 대규모 프로젝트에 적합 : 협업 시 코드 품질을 유지하는 데 유리함.
단점
- 학습 곡선이 존재 : 자바스크립트에 비해 학습이 다소 어려울 수 있음.
- 초기 설정 필요 : 트랜스파일러 설정 등 추가 작업이 필요함.
코드가 길어짐: 타입 명시로 인해 코드가 더 복잡해질 수 있음.
- 트랜스파일 시간 증가 : 컴파일 시간이 필요함.
🩰 어떤 상황에 어떤 언어를 선택해야 할까?
JavaScript가 유리한 경우
간단한 프로토타입을 빠르게 개발할 때.
소규모 프로젝트나 유지보수가 크게 필요 없는 경우.
팀원이 모두 자바스크립트에 익숙하고, 별도의 타입 관리가 필요 없을 때.
TypeScript가 유리한 경우
대규모 프로젝트나 장기적인 유지보수가 필요한 경우.
협업 프로젝트에서 코드 품질 관리가 중요한 경우.
에러를 미리 잡아야 할 필요가 있는 상황.
정적 타입 시스템을 활용해 개발 생산성을 높이고 싶은 경우.
🥠 인터프리터 언어, 자바스크립트