코드 실행 전의 버그를 미리 예측하여 방지한다.
이를테면 string
과 number
과 같은 원시 타입의 값의 경우 typeof
연산자를 사용하면 각 값들의 타입을 실행 시점에 알 수 있습니다. 하지만 그 밖의 값들, 이를테면 함수값의 경우, 앞서 언급된 방식과 같이 해당 값의 타입을 실행 시점의 메커니즘은 존재하지 않습니다. 예를 들어, 아래와 같은 함수를 살펴보겠습니다.
function fn(x) {
return x.flip();
}
위 코드를 보면, 인자로 전달된 객체가 호출 가능한 프로퍼티인 flip
을 가져야만 위 함수가 잘 작동할 것이라는 것을 우리는 코드를 읽음으로써 알 수 있습니다. 하지만 JavaScript는 우리가 알고 있는 이러한 정보를 코드가 실행되는 동안 알지 못합니다. 순수 JavaScript에서 fn
가 특정 값과 어떤 동작을 수행하는지 알 수 있는 유일한 방법은 호출하고 무슨 일이 벌어지는지 보는 것입니다. 이와 같은 동작은 코드 실행 전에 예측을 어렵게 만듭니다. 다시 말해 코드가 어떤 동작 결과를 보일지 코드를 작성하는 동안에는 알기 어렵습니다.
이런 측면에서 볼 때, _타입_이란 어떤 값이 fn
으로 전달될 수 있고, 어떤 값은 실행에 실패할 것임을 설명하는 개념입니다. JavaScript는 오직 동적 타입만을 제공하며, 코드를 실행해야만 어떤 일이 벌어지는지 비로소 확인할 수 있습니다.
이에 대한 대안은 정적 타입 시스템을 사용하여 코드가 실행되기 전에 코드에 대하여 예측하는 것입니다.
npm install -g typescript
노드 버전은 17.3.1이상이면 충분
노드 js는 ts도 이해한다(node-ts 모듈 사용하여 node로 바로 ts 실행할 수 있음)
[ ] 기본 실행
hello.ts 작성
console.log("hello world");
다음 명령어 실행 시, js로 컴파일 된 결과 파일이 생성된다.
컴파일 할 경우, 타입 표기는 완전히 지워지며 템플릿 리터럴은 따옴표로 변환된다.(+기호도 추가됨)***