타입스크립트는 마이크로소프트에서 개발하고 관리하는 오픈소스 프로그래밍 언어로 자바스크립트를 베이스로 하는 javascript를 감싸는 자바스크립트의 상위 집합(superset of javascript) 언어이다.
브라우저나 운영체제 상관없이 javascript가 동작하는 곳 어디든 대체해서 사용할 수 있다.
자바스크립트는 프로그래밍이 동작할 때 타입이 결정되는 언어이다.
자바스크립트는 동적 타입이 특징으로 프로그래밍이 동작할 때 실시간으로 타입이 결정이 되어서 사용자가 애플리케이션을 사용하면서 에러가 터질 수 있다. 반면 타입스크립트는 타입이 정적으로 결정되기 때문에 코딩을 할 때 즉각적으로 타입 에러를 받아볼 수 있다. 이런한 이유로 개발할 때 에러에 대한 검사를 받을 수 있어 조금 더 안정적이고 확장이 쉬운 소프트 웨어를 만들 수 있다.
예를 들어, 동적 타입의 경우 아래와 같이 변수를 선언하면서 문자열을 할당했다가 이후 숫자를 할당할 수 있다.
동적 타입(dynamically type)
let name = 'sara'; name = 158;
또 아래와 같이 숫자를 더하는 함수를 기대했는데 문자열을 인자로 넣어도 함수는 에러를 나타내지 않고 동작한다.
function sum (a, b) { return a + b }; sum(5, 1); // 6 sum('hello', 'world'); // 'helloworld'
정적 타입의 경우 아래와 같이 변수를 선언할 때 타입을 명시해서 작성을 해야 하고 한번 결정된 타입을 바꿀 수 없다. 다른 타입을 할당하면 에러를 나타낸다.
정적 타입(statically type)
let name:string = 'sara'; name = 158; // error
또 아래와 같이 숫자를 리턴하는 함수를 만들었다면 인자와 리턴되는 값 모두 타입을 명시하면 인자와 리턴되는 값 모두 숫자여야만 한다. 정적 타입은 예상치 못한 오류를 방지할 수 있다.
function sum (a:number, b:number): number { return a + b }; sum('hello', 'world'); // error
브라우저나 운영체제 상관없이 javscript가 동작하는 곳 어디든 대체해서 사용할 수 있는 이유는 타입스크립트 코드를 컴파일 해서 자바스크립트 코드로 변환하기 때문이다.
컴파일링 할 때 어떤 버전으로 컴파일 할 건지 설정할 수 있어서 모든 브라우저에서 동작 가능한 웹 애플리케이션을 만들 수 있고 최신 문법으로 코딩을 할 수 있다.
객체 위주로 모듈성 있는 코드를 작성할 수 있다.