typescript - 1
타입스크립트는 오픈소스 프래그래밍 언어이다. 이 언어는 마이크로소프트가 개발했고 마이크로소프트에서 유지 관리하고 있고, ECMAScript 표준을 따르고 있다.
ECMAScript
ECMA는 유럽 컴퓨터 제조사 연합(European Computer Manufacturers Association)의 약자로 스크립트의 표준을 만들고 관리하는 단체이다.
이 단체는 여러 표준을 관리하고 있다.
- Javascript
- C#
- Dart
- JSON(Javascript Object Notation)
- XML
ES1
ECMAScript 표준은 1997년에 첫 번째 판(edition)이라는 의미로 ‘Ed. 1’이라는 버전 형식을 추가해 ‘ECMA-262 Ed. 1’이라고 명명하며 웹이 본격적으로 등장하던 시기에 처음 나왔다.
배경은 자바스크립트와 JScript 중 어느 언어를 브라우저의 표준으로 채택할지를 결정하는 과정에서 나왔다. 두 언어는 저마다 장점이 있었지만, 브라우저에서 두 언어를 모두 사용할 수 없었기 때문에 두 언어 사이의 격차를 완화하고 중재를 위한 표준으로 ES1이 나왔다. 그 이후 ES1을 따르는 javascript가 브라우저용 언어로 채택된다.
ES2
1998년도에 나왔으며 새로운 특징이 추가된 것이 아닌, 국제 표준화 기구와 국제 전기 전자 표준 위원회의 표준인 ISO/IEC 16262에 부합하도록 재편집됐다.
ES3
ECMAScript 가 본격적으로 브라우저 지원을 위한 표준으로 발돋움되었다. 이때 정규식 지원, try/catch 예외 처리 구문 등이 추가되었다.
ES4
예외적으로 관계자 회의를 거쳐 불완전한 표준으로 결정되어 표준으로 채택되지 못했다.
ES5
2009년에 브라우저에서 가장 안정적으로 동작하는 표준이 나왔다. 이때 ES5 표준을 기반으로 한 Node.js 플랫폼도 등장한다. 이로써 단지 브라우저만이 아닌 서버 프로그래밍이 가능한 언어로서 영역을 확장했다. 프런트엔드와 백엔드를 모두 아우르는 풀스택 개발 언어로 진화한 것이다.
ES6
2015년에 발표되었으며, Node.js가 채택해 사용하는 CommonJS와 AMD 방식의 근간이 되는 모듈 시스템이 추가됐다. 그 밖에도 화살표 함수, 클래스, 개선된 객체 리터럴, 템플릿 문자열, 심볼, 프로미스, 제너레이터, for of, 디스트럭처링, 프록시(proxy), 유니코드, let, const, yield 등과 같은 특징이 추가됐다.
ES7
2016년 7월에 표준 심의를 거쳐 확정되었다. 대표적으로 비동기 함수를 동기화할 수 있는 Async/Await에 대한 특징 등이 추가됐다.
ES8
2017년 7월 말에 정식 발표됐다. 문자열 패딩(string padding), Object.values 메소드, Object.entiries 메소드 등 많은 특징이 추가됐다.
TypeScript
TypeScript는 ECMAScript를 따르기 때문에 자바스크립트의 특성을 침범하지 않고 최신 ECMA 표준을 지원한다.
그래서 TypeScript를 자바스크립트의 상위 집합(superset) 언어라고 한다.
특징
- 정적 타입 언어(static type language)이다.
- 정적 타입 언어는 컴파일 타임(complie time)에 타입을 검사하는 데 시간이 들지만 안전성을 보장한다.
- 기존 자바스크립트는 타입 안전성을 포기하고 속도를 택했으나 타입스크립트는 컴파일 시간에 타입 검사를 수행하고 타입 안정성이 건증된 자바스크립트 코드를 생성한다. -> 속도와 안정성을 모두 얻음.
- 모듈 시스템 = ES6 모듈과 네임스페이스 지원
- 클래스와 인터페이스 지원
- 타입 시스템 지원
아키텍쳐
타입스크립트는 자바스크립트의 보완 도구로서 언어뿐 아니라 각종 환경을 포함해 발전하고 있다.
컴파일러
타입스크립트는 언어 변환 기능을 수행하는 코어 타입스크립트 컴파일러(core typescript complier)를 기반으로 한다.