- 마이크로소프트(MS)에서 개발하여 2012년 10월에 첫 출시
- 오픈소스 객체지향 프로그래밍 언어로 어떤 브라우저나 호스트, 운영체제에서도 동작
- client-side, server-side 에서 자바스크립트 런타임이 존재하는 어떤곳에서도 대체해서 사용 가능하다.
- ECMA의 최신 표준을 지원
- typescript code 를 transcompiles 해서 javascript code로 변환하는 것으로 컴파일 해줄 수 있는 Compiler 에는 typescript 자체에서 제공하는 컴파일러나 BaBel 을 이용할 수 있다.
javascript 는 Dynamically Typed 으로 프로그램이 동작할 때 type 이 결정되어서 runtime 환경 때 errors 가 발생되는 문제가 있다.
typescript 는 Statically Typed 으로 코딩할 때 type 이 결정되어서 코딩할 때 즉각적으로 type errors 를 확인할 수 있다.
Dynamically Typed (동적 타입)
let age = 10;
age = "hello";
다른 타입으로 할당 되도 에러가 발생하지 않음.
Statically typed (정적 타입)
타입을 명시해서 작성해야됨.
let age:number = 10;
age = "hello";
타입을 반드시 명시해야되고 타입은 절대 바뀔 수 없다.
다른 타입으로 할당하게 되면 컴파일 시간, 코딩 시 에러가 발생한다.
컴파일러
우리가 작성한 코드를 프로그램 형태로 동작시키기 위해서는 프로그램이 동작하는 환경에서 이해할 수 있는 언어나 바이너리형태로 변환해주는 작업을 거쳐야하는데 이것이 컴파일러이다.
Compile time 컴파일러 시간에 타입이 결정되고 타입이 확인이 될 수 있으면 statically typed 이라고 하고
프로그램이 동작할 때 런타임 환경 때 타입이 결정되고 타입이 확인 되는것을 dynamically typed 이라고 한다.
모듈성(modularity) 있는 코드를 작성 가능 재사용(reusability)할 수 있어 재사용성 높음.확장성(extensible)도 높음. 유지보수성(maintainability)이 높음.