ECMAScript
란?
Javscript
는 1990년대 Netscape
사에서 개발되었는데 언어가 인기를 얻자 MS에서 Jscript라는 언어를 개발하여 IE에 도입했다(이때부터 벌써 IE헬파티가..). 이 두 스크립트가 표준 없이 각자 개발되다가 Netscape
는 표준화를 위해 자바스크립트 기술 규격을 Ecma international
에 제출, 채택되어 ECMA-262
라는 규격이 탄생하게 된다. 이후 Javscript
와 Jscript
모두 ECMAScript
의 호환을 목표로 개발되었다.
ES6
= ECMAScript 2015
= ES2015
ES6
부터 Javascript
의 전성기가 시작되었다고 말해도 과언이 아니다. 주요 기능으로 Contant
, Scoping
, Arrow Functions
, Class
, Promise
등 이 추가되며 거의 새로운 언어로 대변신 하게 된다. 나는 ES6 이전에 개발을 하지 않아서 어떻게 Scoping
없이 코딩을 했는지 가늠이 안 된다.
ES7
= ECMAScript 2016
= ES2016
제곱연산자로 불리는 Exponentiation Operator
, Array.prototype.includes
추가
ES8
= ECMAScript 2017
= ES2017
Object.values
, Object.entries
와 같은 유용한 메소드들과 Trailing commas in function
을 허용함으로써 객체 리터럴에서 마지막 콤마를 허용하는 것과 일치시켰다. 그리고 가장 중요한 변화중 하나가 async/await
인데 콜백헬의 구원자로 등장했던 ES6
의 Promise
를 더욱 간결하게 사용 할 수 있게끔 함으로써 자바스크립트의 비동기 코딩의 복잡도 및 가독성을 크게 향상시킨 기능이다.
ES9
= ECMAScript 2018
= ES2018
Object rest/spread
는 ES6
의 Spread operator
를 Array
에만 쓸 수 있었던 것을 Object
로 확장시키는 기능으로써 모던 자바스크립트에서 아주 유용하게 널리 쓰이는 기능이다. 그 외 Promise
의 성공 실패 여부와 상관없이 무조건 실행되는 Promise finally
와 비동기 반복 코딩의 복잡도를 줄여준 Async iteration
이 있다.
ES10
= ECMAScript 2019
= ES2019
Object.fromEntries
, trimStart/End
, flat
등 메소드들이 추가되었다. 2020.04.08 기준으로 최신 브라우저에서는 IE
, Opera
를 제외하고 거의 지원하고 있다.
Typescript
문서에 What's new
페이지에서 버전별 무엇이 추가되었는지 살펴보았다. 링크
1.3
protected modifier
가 추가되었다(원래는 없었나?). Java
나, C++/C#
에서처럼 class
내부와 상속받은class
(subclasses)에서만 접근 가능한 맴버를 생성 할 수 있다.
Tuple types
은 배열의 포지션의 타입을 명시하는 문법.
1.4
Union types
은 |
파이프라인을 통해 타입들간에 or
연산자 역할을 한다.Type Aliases
타입스크립트의 타입들을 변수에 담아 사용하는 것을 허용했다.1.5
ES6 Modules
import/export
, re-exporting
, default export
, Base import
구문이 도입되었다.namespace keyword
인터널 모듈임을 명시하는 네임스페이스가 추가되었다.ES6
의 기능들 추가1.6
JSX
추가Intersection types
추가 1.4
버전의 Union types
와 반대로 타입들간에 &
심볼로 and
연산 역할을 한다.1.7
~ 2.7
async/await
, object rest/spread
등 ES8/9
, 기능 추가
3.7
1.optional chainging
현재 3.8
버전이 최신이며 업그레이드 되면서 새로운 기능 추가, tsconfig.json
을 통한 컴파일러 옵션 변경을 반복한다.