타입스크립트(TypeScript)
Microsoft에서 개발하고 관리하는 언어. 자바스크립트의 슈퍼셋(상위확장)인 오픈소스 프로그래밍 언어이다. 확장자는 .ts이며 컴파일하여 .js를 출력한다. 최종적으로 이 자바스크립트를 구동하게 된다. 타입스크립트는 컴파일하면 자바스크립트가 되는 언어이며, 자바스크립트에 Type을 설정할 수 있는 게 가장 큰 특징이다.
자바스크립트(JavaScript)
- 프로토타입 기반의 프로그래밍 언어, 스크립트 언어이다. HTML, CSS와 함께 웹을 구성하는 요소 중 하나로 HTML이 웹페이지의 기본 구조, CSS가 디자인, JavaScript는 웹페이지의 동작을 담당한다.
- HTML5가 나오기 전 대부분의 인터랙티브한 웹페이지는 기존 플래시와 같은 플러그인에 의존하였었는데, HTML5에선 자바스크립트로 대체되었다.
스크립트 언어(Scripting Language)
소스코드를 컴파일하지 않고 실행할 수 있는 프로그래밍 언어. 이미 존재하는 소프트웨어를 제어하기 위한 용도로 대부분 소스코드를 한줄한줄 읽어 바로 실행하는 인터프리터 방식을 사용한다. 컴파일 과정 없이 바로 실행할 수 있다는 장점이 있지만 번역 과정을 거쳐야 하기 때문에 느리다는 단점이 있다.
-> 자바스크립트는 스크립트 언어이기 때문에 웹 등에서 컴파일 없이 바로 실행할 수 있는 장점이 있으나, 대규모 어플리케이션을 개발하기에는 한계가있다. 자바 스크립는 처음 웹브라우저를 위한 간단한 스크립팅에만 사용했으나 갈수록 큰 규모의 앱에서도 사용이 필요해졌으나 대규모 앱에서 개발하는데 한계가 있었다.
타입 스크립트(TypeScript) = Type + JavaScript
TypeScript는 JavaScript를 대체하기 위한 언어가 아닌, 보안하기 위한 언어이다. TypeScript는 컴파일하여 JavaScript로 만들어준다. TypeScript는 자바스크립트의 기능을 확장하여 개발시 불편했던 부분을 보완하고 기능을 확장하여 제공해주는 언어이다.
가장 큰 특징으로 JavaScript에 Type을 줌으로써 컴파일 시점에 타입체크가 가능하다는 것, 객체지향 프로그래밍 패턴 등을 자바스크립트에서 사용할 수 있다라는 등의 기능을 제공하는 장점이 있다.
TypeScript 장점
1) 정적타입 지원
- 자바스크립트 : 동적타입
동적타입 언어의 자료형은 컴파일시 자료형을 선언하는 것이 아니고 실행 시에 결정된다. 예제와 같이 변수 a와 b는 자료형 없이 실행시 타입이 결정되어 동작한다. 의도치 않은 서로 다른 타입을 계산할 수 있고 이로 인해 버그가 발생할 수 있다.
const a = 3;
const b = 'ABCDE';
console.log(a*b)
- 타입스크립트 : 정적타입
C,C++,Java와 같은 언어에서 사용. 타입의 자료형을 컴파일시 결정. 변수에 들어갈 형태에 자료형을 지정해준다. 컴파일 시 자료형에 맞지 않은 값이 들어있으면 컴파일 에러가 발생한다.
const a:number = 3;
const b:string = '5';
console.log(a*b)
-> 타입스크립트는 정적타입 언어로, 컴파일시 타입검사를 실시해 안정성을 높여준다.
2) type에 대한 예외처리 불필요
typeof operand
typeof(operand)
-JavaScript는 데이터의 타입을 확인하기 위해 typeof 연산자를 사용한다. 런타임시 타입을 확인하기 위해 위와같은 코드를 넣어 확인하고, 이와 같은 처리를 반복해서 추가할 경우 성능상에 문제가 발생할 수 있다. TypeScript에서 타입이 지정될 경우 이런 예외는 사용하지 않아도 된다.
3) 객체지향 프로그래밍 지원
- 인터페이스, 제네릭, 기존 ES6보다 확장된 클래스 등의 객체지향 프로그래밍을 지원한다. 이를 통해 복잡하고 큰 규모의 프로그램을 보다 쉽게 구현할 수 있도록 도와주며, 객체지향에 익숙한 개발자에게 보다 개발에 용이한 환경을 제공한다.
4) 통합개발환경(IDE) 지원
- MS에서 개발하고 지원하기 때문에 VS Code를 이용해 쉽게 환경을 구축할 수 있고, 개발하는데 많은 피드백을 받을 수 있다. 또한 정적 type을 지원함으로써 IDE를 이용한 고수준의 인텔리센스(IntelliSense)를 제공받을 수 있다. 이또한 대규모 프로젝트를 개발하는데 용이하게 사용될 수 있다.
[참고]
'Software Development > IT' 카테고리의 다른 글
EXIF (Exchangeable Image File Format) - 이미지 파일 메타 데이터 포맷 (0) | 2021.01.26 |
---|---|
PC 구매 전 기본 상식 - GPU 쉽게 이해하기 (0) | 2021.01.18 |
PC 구매 전 기본 상식 - CPU 쉽게 이해하기 (0) | 2021.01.14 |
구글홈 & 헤이홈 스마트 리모컨 허브 연동으로 가전기기 연동하기 (0) | 2020.03.21 |
구글홈 도착!! 모바일 & 티비 연동해보기 (0) | 2020.03.14 |