꼼지락거리기

타입스크립트 스터디 - Learning TypeScript 1장

튼튼한간 2023. 4. 23. 18:28

1장 자바스크립트에서 타입스크립트로

타입스크립트의 시발점인 자바스크립트에 대하여

 

1.1 자바스크립트의 역사

- 1995년 넷스케이프의 브레던 아이크가 10일 만에 설계함

- 2015년부터 매년 새로운 버전을 출시하며 임베디드 애플리케이션 그리고 서버 런타임을 포함한 다양한 환경에서 새로운 버전과 이전 버전과의 호환성을 수십 년 동안 유지

 

1.2 바닐라 자바스크립트의 함정

- 중요한 언어 확장이나 프레임워크 없이 자바스크립트를 사용하는 것을 '바닐라'라고 부름. 즉 순수한 자바스크립트를 의미

1.2.1 값 비싼 자유

- 가장 큰 불만은 핵심 기능

- 코드의 자유는 자바스크립트를 재밌게 만들기도 하지만, 코드를 안전하게 실행하려고 할 때는 상당한 고통을 동반

 

1.2.2 부족한 문서

- 언어 사양에는 함수의 매개변수, 함수 반환, 변수 또는 다른 구성 요소의 의미를 설명하는 표준화된 내용이 없음

- 많은 개발자가 블록 주석으로 함수와 변수를 설명하는 JSDoc 표준을 채택

*JSDoc : 자바스크립트 소스 코드에 주석을 달기 위해 사용하는 마크업 언어

- 규모가 있는 코드베이스에서는 사용하기 불편

 

1.2.3 부족한 개발자 도구

- 자바스크립트는 타입을 식별하는 내장된 방법을 제공하지 않고, 코드가 JSDoc 주석에서 쉽게 분리되기 때문에 코드베이스에 대한 대규모 변경을 자동화하거나 통찰력을 얻기가 매우 어려움

 

 

1.3 타입스크립트

- 타입스크립트는 2010년대 초에 마이크로소프트 내부에서 만들어진 후 2012년에 출시 및 오픈소스화 됨

- 프로그래밍 언어, 타입 검사기, 컴파일러, 언어 서비스 네 가지로 설명 됨

 

1.4 타입스크립트 플레이그라운드에서 시작하기

- 타입스크립트 공식 웹사이트는 플레이그라운드 편집기를 제공

- 편집기에 코드를 입력할 수 있고, IDE(통신 개발 환경)에서 로컬로 타입스크립트 작업을 할 때 보게 되는 동일한 편집기 제안 사항도 확인 가능

1.4.1 타입스크립트 실전

- 코드를 입력할 때 편집기에서 간단한 오류를 미리 알려줌

 

1.4.2 제한을 통한 자유

- 매개변수와 변수에 제공되는 값의 타입을 지정할 수 있음

- 잘못된 수의 인수를 사용해서 함수를 호출하는 것은 타입스크립트가 제한하는 자바스크립트가 가진 일종의 근시안적인 자유

 

1.4.3 정확한 문서화

- 타입스크립트는 구문을 적용해 객체의 형태를 설명하고, 우수하고 강력한 시스템을 이용해 객체가 어떻게 보이는지 설명

 

1.4.4 더 강력한 개발자 도구

- VS Code와 같은 편집기에서 타입스크립트로 코드를 작성하면 편집기는 타입스크립트를 더 깊이 있게 이해

- 코드 이해를 위해 타입스크립트의 타입 검사기를 추가하면 이미 작성한 코드에 대해서도 유용한 제안을 제공

 

1.4.5 구문 컴파일하기

- 타입스크립트 컴파일러에 타입스크립트 구문을 입력하면 타입을 검사한 후 작성된 코드에 해당하는 자바스크립트를 내보냄

 

1.5 로컬에서 시작하기

- 컴퓨터에 Node.js가 설치되어 있으면 타입스크립트 실행 가능

1.5.1 로컬에서 실행하기

- 컴퓨터 아무 곳에나 폴더를 만들고 다음 명령어를 실해해 신규 tsconfig.json 구성 파일을 생성

tsc --init

해당 파일은 타입스크립트가 코드를 분석할 때 사용하는 설정을 선언

 

1.5.2 편집기 기능

- tsconfig.json 파일을 생성할 때 또 다른 이점은 편집기에서 특정 폴더를 열었을 때, 편집기가 이제 해당 폴더를 타입스크립트 프로젝트로 인식한다는 것

 

1.6 타입스크립트에 대한 오해

1.6.1 잘못된 코드 해결책

- 타입스크립트는 자바스크립트 코드를 구조화하는 데 도움은 되지만, 타입 안정성 강화를 제외하고는 해당 구조가 어떻게 보여야 하는지에 대해서는 어떤 것도 강요하지 않음

- 타입스크립트는 특정 대상만을 위한 독단적인 프레임워크가 아닌 모든 개발자가 사용할 수 있는 프로그래밍 언어

 

1.6.2 자바스크립트로의 확장

-타입스크립트의 설계 목표 : 현재와 미래의 ECMA스크립트 제안에 맞춘다. 모든 자바스크립트 코드의 런타임 동작을 유지한다.

 

1.6.3 자바스크립트보다 느림

- 운영 프레임워크 대다수는 타입스크립트의 컴파일러를 전혀 사용하지 않음

- 대신 트랜스파일을 위한 별도의 도구를 사용하고 타입스크립트는 타입 검사용으로만 사용

- 타입스크립트는 코드를 빌드하는 데 시간이 조금 더 걸림

 

1.6.4 진화가 끝남

- 타입스크립트의 기본 원칙은 거의 변함이 없겠지맘ㄴ, 오류 메시지, 더 멋진 기능 그리고 편집기와의 통합은 시간이 지남에 따라 개선될 것

 

1.7 마치며