-
[TypeScript] TypeScript란?■ Front-End/- Angular 2019. 9. 3. 14:19
TypeScript는 Javascript(ES5)의 상위 확장 개념 언어이다. 그래서 ES5의 문법을 그대로 사용할 수 있고, ES6에서 새롭게 추가된 기능들을 기존의 자바스크립트 엔진에서 실행할 수 있다. (Babel을 사용하지 않아도 된다.)
장점
1. 정적 타입 지원
기존 Javascript에서 함수를 선언할 때 아래와 같이 사용한다.
위 함수는 2개의 매개변수를 전달받아 두 수의 합을 반환하는 함수이다. 매개변수의 자료형을 다르게 호출해도 자바스크립트 엔진은 동적으로 값을 반환한다.
TypeScript는 정적 타입을 지원하는데, 아래와 같이 작성한다.
이처럼 명시적으로 정적 타입을 지정하는 코딩 방식은 여러 장점이 있다.
- 컴파일 단계에서 오류를 확인할 수 있다.
- 개발자의 의도를 명확하게 코드로 작성할 수 있다.
- 코드의 가독성을 높이고 결과 값을 예측할 수 있으며, 디버깅을 쉽게 할 수 있도록 한다.
TypeScript는 Javascript의 타입을 그대로 사용할 수 있고, TypeScript 고유의 타입이 추가로 제공된다.
Type Javascript Typescript Description boolean ◯ ◯ true와 false null ◯ ◯ 값이 없다는 것을 명시 undefined ◯ ◯ 값을 할당하지 않은 변수의 초기값 number ◯ ◯ 숫자(정수와 실수, Infinity, NaN) string ◯ ◯ 문자열 symbol ◯ ◯ 고유하고 수정 불가능한 데이터 타입이며 주로 객체 프로퍼티들의 식별자로 사용(ES6에서 추가) object ◯ ◯ 객체형(참조형) array ◯ 배열 tuple ◯ 고정된 요소수 만큼의 타입을 미리 선언후 배열을 표현 enum ◯ 열거형. 숫자값 집합에 이름을 지정한 것이다. any ◯ 타입 추론(type inference)할 수 없거나 타입 체크가 필요없는 변수에 사용. var 키워드로 선언한 변수와 같이 어떤 타입의 값이라도 할당 가능. void ◯ 일반적으로 함수에서 반환값이 없을 경우 사용한다. never ◯ 결코 발생하지 않는 값 만약 타입 선언을 생략하면, 값이 할당되는 과정에서 동적으로 타입이 결정된다. 이를 '타입 추론'이라고 한다.
TypeScript는 정적 타입 언어이므로 타입 추론으로 타입이 한 번 결정되면, 그 이후에 다른 타입 값을 할당하면 에러가 발생한다.
만약 타입 선언을 생략하고 값도 할당하지 않았다면, 해당 변수의 타입은 'any'가 된다. 'any' 타입의 변수에는 어떤 타입의 값을 재할당할 수 있다. 하지만 이는 TypeScript의 특징에 벗어나므로 지양하는 것이 좋다.
2. 도구의 지원
IDE(통합 개발 환경)을 포함한 다양한 도구의 지원을 받을 수 있어 대규모 프로젝트를 진행하는데 좋다.
3. 객체지향 프로그래밍 지원
TypeScript는 인터페이스, 제네릭 등과 같은 강력한 객체지향 프로그래밍을 지원한다. 그래서 Java, C# 등 클래스 기반 객체 지향 언어에 익숙한 개발자가 자바스크립트 프로젝트를 수행하는 데 진입장벽을 낮추는 효과가 있다.
4. ES6 / ES Next 지원
TypeScript는 ES5보다 개발환경을 구축하는 데 좀 더 복잡한 편이지만, ES6와 달리 Babel을 사용하지 않아도 된다는 부분이 더 큰 장점이다.
5. Angular
Angular는 TypeScript 뿐만 아니라 ES5, ES6로도 작성할 수 있지만, 대부분 Angular 관련 문서들이 TypeScript로 작성되어있다.
참고 사이트 : https://poiemaweb.com/typescript-introduction
TypeScript - Intro & Install | PoiemaWeb
TypeScript 또한 AltJS의 하나로써 자바스크립트(ES5)의 Superset(상위확장)이다. C#의 창시자인 덴마크 출신 소프트웨어 엔지니어 Anders Hejlsberg(아네르스 하일스베르)가 개발을 주도한 TypeScript는 Microsoft에서 2012년 발표한 오픈소스로 정적 타이핑을 지원하며 ES6(ECMAScript 2015)의 클래스, 모듈 등과 ES7의 Decorator 등을 지원한다. TypeScript는 ES5의 Superse
poiemaweb.com
'■ Front-End > - Angular' 카테고리의 다른 글
[Angular] Observable & Observer (0) 2019.10.02 [Angular] Data binding (0) 2019.09.26 [Angular] Angular Arichitecture (0) 2019.09.24 [Angular] IntelliJ에서 Angular-CLI를 이용한 프로젝트 만들기 (0) 2019.09.15 [npm] npm package 설치 실패시 (0) 2019.09.15