[마소 393호] 자바스크립트 정적 타입 시대

입력 2018.07.25 08:02

프트웨어 전문지 마이크로소프트웨어의 최신호는 우리가 매일 접하는 웹 페이지, 모바일 등 프론트엔드(Front-End)를 주제로 담았습니다. 자바스크립트, 정적 타입, 리액트, 뷰, 앵귤러, 일렉트론, 아이오닉 등 마소 393호의 주요 기사들을 IT조선 독자에게도 소개합니다. [편집자주]

자바스크립트와 그 개발환경은 최근 들어 비약적으로 발전했으며, 웹을 넘어 많은 플랫폼에서 돌아갈 수 있는 언어로 발전하고 있다. 더 많이 발전될 가능성이 무궁무진한 자바스크립트의 개발 및 구동 환경 그리고 자바스크립트 기본 특성인 빠른 개발 속도 덕분에 요즘 많은 스타트업에서 주된 언어로 매우 자주 쓰이고 있다. 만약 여러분 회사에서 프로젝트를 위한 애플리케이션 개발을 자바스크립트로 했다면, 그다음은 정적 타입(Statically-Typed) 시스템 도입을 적극적으로 검토해야 한다.

자바스크립트는 동적 타입(Dynamically-Typed) 언어다. 동적 언어 시스템은 여러 복잡한 타입 및 구조 설정을 제쳐두고, 동작하는 로직에만 집중해 프로젝트를 빠르게 진행할 수 있는 좋은 시스템이다. 하지만 반대로 정적 타입이 가지는 여러 장점을 포기해야 한다.

그러나 이제 타입스크립트(Typescript), 플로우(Flow) 외 여러 라이브러리로 정적 타입을 검사할 수 있다. 자바스크립트에 정적 타입 시스템을 적용하면 어떤 장점이 있을까? 최대 장점은 버그를 줄일 수 있다는 점이다.

2017년 9월에 발표된 논문, To Type or Not to Type: Quantifying Detectable Bugs in JavaScript. / 마이크로소프트웨어 393호 발췌
2017년 9월에 발표된 논문이다. 이 논문에 따르면, 자바스크립트에 정적 타입 시스템 적용 후 깃허브(GitHub)에 올라온 15% 버그를 사전에 막을 수 있었다고 한다. 논문에서는 깃허브에 등록된 자바스크립트 프로젝트 391만 969개 문제 중 신뢰구간 95%의 수준인 버그 400개(버그 샘플 385개를 반올림함)를 조사해, 그중 15%를 해결할 수 있음을 증명했다.

만약 여러분의 프로젝트에 정적 타입 체크를 적용하기로 했다면, 무엇을 쓸지 결정해야 한다. 현시점에서는 정적 타입 시스템으로 타입스크립트와 플로우가 많은 인기를 받고 있다. 이 두 시스템뿐 아니라 리즌(Reason), 클로저스크립트(ClojureScript), ‘Elm’, 퓨어스크립트(Purescript) 등도 있다.

타입스크립트와 플로우는 같은 정적 타입 시스템이지만, 다른 관점으로 시스템을 정의해 발전하고 있다.

타입스크립트는 자바스크립트로 컴파일되는 언어로 개발된 정적 타입 시스템이 있는 하나의 언어고, 플로우는 자바스크립트를 위해 정적 타입을 추가해주는 도구로 개발됐다. 타입스크립트는 정적 타입 검사, 타입스크립트만의 문법, 자바스크립트로 컴파일하는 기능이 들어 있다. 플로우는 바벨의 프리셋(Preset) 형태로 정적 타입 검사를 하고 자바스크립트 컴파일은 바벨이 한다.

김비치 필자의 자바스크립트 정적 타입 시대에 대한 자세한 내용은 ‘마이크로소프트웨어 393호(https://www.imaso.co.kr/archives/3408)’에서 확인할 수 있다.