타입스크립트(Typescript)란?
- Javascript에 추가적인 구문을 추가하여 editor와의 단단한 통합을 지원하는 strongly typed(강타입) 프로그래밍 언어. editor에서 초기에 오류를 잡을 수 있다.
- Typescript 코드는 Javascript가 실행되는 모든 곳(브라우저, Node.js, Deno 및 앱 등) 에서 Javascript로 변환될 수 있다.
- 변환하는 이유는 브라우저가 Typescript가 아닌 Javascript를 이해하기 때문.
- Node.js는 둘 다 이해할 수 있다.
- Typescript는 Javascript를 이해하고 타입추론(type inference)을 사용하여 추가 코드 없이도 훌륭한 도구를 제공한다. 개발자가 실수하지 않도록 보호해준다.
Typescript의 변환 과정
- Typescript코드를 작성
- Typescript가 에러를 감지하면 Javascript로 컴파일되지 않음
- 에러가 없다면 Javascript로 컴파일됨.
ex)
[1, 2, 3, 4] + false
위 와같은 코드는 컴파일 조차 되지 않는다.
Typescript의 타입 시스템
- Typescript에게 구체적으로 말해주는 방법(explicit)
let b : boolean = "x"
- 변수 b가 boolean타입이어야 한다고 Typescript에게 말해주고 있지만
boolean타입에 string타입을 할당할 수 없기 때문에 error가 뜬다.
let b : boolean = false
- Typescript가 추론하게 하는 방법(implicit)
let a = "hello"
let c = [1, 2, 3, 4]
라고만 해도 Typescript는 a의 타입이 string이라는 것과 c의 타입이 number array라는 것을 추론해준다.
2번째 방법(implicit)으로 코드를 작성하는게 바람직하다.
- Typescript의 Typechecker에게 타입을 추론하는 것을 허용해주기 위해.
- 더 쉽고 코드도 짧아져 가독성이 향상됨.
let c = []
하지만 위처럼 빈 배열을 선언하는 경우에는 Typescript에게 이 array가 어떤 array라고 명시적으로 말해줘야할 필요가 있다.
let c : number[] = []
이와 같은 명시적 표현은 Typescript가 타입을 추론하지 못할 경우에만 최소한으로 사용하는게 좋다.