이미 알려진 대로 타입스크립트 4.0은 .tsbuildinfo와 함께 디스크에 쓰는 빌더 내 시맨틱 진단 캐시를 활용해 build 모드에서의 작업 속도를 개선했다. 이에 따라 이전 컴파일에서 --incremental 오류가 발생한 후 다음 컴파일 과정에서 --noEmitOnError 플래그를 사용했을 때 속도가 매우 느려지는 오류를 바로 잡았다.
또한 새 자바스크립트/타입스크립트 기능을 통해 비주얼 스튜디오 코드와 비주얼 스튜디오 2017/1029, 서브라임 텍스트 3 등에서 시나리오 편집 작업을 개선했다. 새로 추가된 부분적 편집 모드를 이용하면 프로그램 시작 시간을 줄일 수 있는데, 특히 대형 프로젝트 작업에서 효과가 크다. 개선된 오토-임포트 기능은 package.json의 dependencies 필드에 등록된 패키지까지 포함해 에디터 시나리오에서 더 많은 작업을 지원한다. 이들 패키지의 정보를 이용해, 타입 확인 등 다른 변경 사항 없이 오토-임포트를 개선한다.
이밖에 타입스크립트 4.0의 주요 변화는 다음과 같다.
- 베리에딕 튜플 타입을 이용하면 튜플 타입이 다양한 제네릭 타입의 스프레드를 가질 수 있다. 이들 제네릭 타입은 타입 예시를 통해 실제 요소로 대체할 수 있다. 이제 튜플 타입 문법에서 스프레드를 제네릭으로 설정할 수 있으므로, 운영되는 실제 타입을 알지 못해도 튜플과 어레이에서 더 높은 차원의 작업을 표현할 수 있다. 또한 스프레드 요소는 튜플의 끝이 아니라 어디에서는 실행이 가능하다. 버전 4.0에서는 나머지 파라미터와 튜플 요소에 대한 추론 프로세스도 개선했다. 특히 베리에딕 튜플 타임은 함수 구성 관련해서 새 패턴을 사용할 수 있다.
- 튜플 타입은 라벨을 지원해 사용성이 개선됐다.
- noImplicitAny를 활성화하면 컨트롤 플로어 애널리시스를 클래스의 속성 타입을 결정하는 데 사용할 수 있다.
- &&=, ||=, ??= 등 3가지 새 할당 연산자를 추가해 코딩을 지원한다.
- catch절 변수 타입을 unknown으로 설정할 수 있게 됐다. unknown을 이용하면 개발자가 값을 처리하기 전에 타입을 체크할 수 있어 any보다 안전하다.
- JSX 팩토리의 경우 사용자가 새로운 jsxFragmentFactory 옵션을 이용해 프레그먼트 팩토리를 맞춤화할 수 있다. 프레그먼트는 다중 상속 요소를 반환하는 JSX 요소의 타입이다.
- 더는 지원하지 않는 기능도 있다. 먼저 delete를 위한 피연산함수가 반드시 선택적이어야 한다. 또한 타입스크립트 노드 팩토리 사용도 제한된다.
타입스크립트 4.0 베타는 NuGet에서 다운로드할 수 있다. 또는 NPM에서 npm install typescript@beta 명령을 실행하면 된다. 타입스크립트 4.0의 이전 버전인 3.9는 지난 5월에 발표됐다. editor@itworld.co.kr