타입스크립트란 자바스크립트의 타입을 강제시키는 언어이다.
자바스크립트는 동적 타입의 인터프리터 언어로 런타임에서 오류를 발견할 수 있는데, 타입스크립트는 정적 타입의 컴파일 언어이며 타입스크립트 컴파일러 또는 바벨(Babel)을 통해 자바스크립트 코드로 변환된다. (* from samsung sds)
장점
코드 작성 단계에서 타입을 체크해 오류를 확인할 수 있고 미리 타입을 결정하기 때문에 실행 속도가 매우 빠르다.
단점
코드 작성 시 매번 타입을 결정해야 하기 때문에 번거롭고 컴파일 시간이 오래 걸린다.
자바스크립트는 변수에 문자열을 할당했다가 숫자열을 재할당해도 문제가 되지 않는다.
// 자바스크립트는 자료형에 연연하지 않고 할당이 가능
let hello = "hello"
hello = 12345
반면 타입스크립트에서는 변수의 타입을 지정해주기 때문에 재할당이 불가하다.
// 자바스크립트는 자료형에 연연하지 않고 할당이 가능
let hello = "hello"
hello = 12345
높은 수준의 코드 탐색과 디버깅
타입스크립트는 목적에 맞지 않는 타입의 변수나 함수들에서 에러를 발생시켜 버그를 사전에 제거한다. 또한 코드 자동완성이나 실행 전 피드백을 제공하여 작업과 동시에 디버깅이 가능해 생산성을 높일 수 있다. 실제로 한 연구에 따르면 모든 자바스크립트 버그의 15%가 사전에 타입스크립트로 감지할 수 있다고 한다.
자바스크립트 호환
타입스크립트는 자바스크립트와 100% 호환된다. 따라서 자바스크립트를 사용할 수 있는 곳이라면 타입스크립트도 쓸 수 있다. 타입스크립트는 앱과 웹을 구현하는 자바스크립트와 동일한 용도로 사용 가능하며 복잡한 대형 프로젝트에서도 빛을 발한다.
(* from samsung sds)
// 변수에 타입을 지정해준다.
let aaa : string = "안녕하세요"
let bbb : number = 123
객체 타입을 만들어주는 네이밍에 관례가 있는데,
바로 interface의 I와 변수명을 합쳐주는 것이다. 예를 들어 객체를 담은 변수명이 Profile이면 타입을 지정하는 객체는 IProfile로 네이밍해주는 것이다!
development: 개발
production: 배포(실행전용)
나중에 배포할땐 yarn installl --production
하면 package json에 devDependencies
는 설치안됨!
yarn add를 통해 설치하는 실제 소스 코드들은 node_modules에, 설치 목록은 package.json에 작성 된다!
여기서 --dev 는 devDependencies 즉, 브라우저에서 실행시 필요한 목록인 dependencies와 달리, 개발 시 vscode에서 필요한 목록으로 설치 된다는 의미였다. devDependencies는 브라우저 실행 시에는 필요 없다는 뜻!!