TypeScript : Statically Typed - Compile errors
→ superset of JavaScript (자바스크립트의 상위 집합)
→ 컴파일 시 타입에 관한 에러를 잡을 수 있다.
→ JavaScript의 Runtime 환경이 존재하는 어느 곳에서도 사용이 가능하다(client-side, server-side)
⚠️ TypeScript 를 그대로 쓸 수 있는 것이 아니라 TypeScript 를 transcompile 하여 JavaScript 로 변환하기 때문에 가능하다. 이렇게 컴파일 해줄 수 있는 컴파일러는 TypeScript에서 자체적으로 제공하는 컴파일러나 BABEL 을 이용한다.
그래서 기존에 작성된 JavaScript 를 TypeScript 로 다시 고쳐서 사용이 가능하다는 점이다.
※ 컴파일러 사용 → nodejs 의 npm 사용
JavaScript : Dynamically typed - Runtime errors
→ 자바스크립트가 동작할 때 실시간으로 타입이 결정되어서 Runtime 환경 때 타입에 관한 에러가 발생할 수 있다.
→ 자바스크립트도 객체 지향 언어로 (Prototype-based) Prototype 을 베이스로 구현할 수 있다.
→ Constructor Function 으로 간단하게 Object를 만들 수 있다.
→ ES6 에 Class 가 추가되었지만 완전한 객체지향에는 한계가 있다.
※ Prototype-based Programming (프로토타입 기반 프로그래밍)
→ 프로토타입 기반 프로그래밍은 객체 지향 프로그래밍과 달리 클래스를 명확히 정의하지 않아도 되며, 속성과 메서드를 다른 클래스의 인스턴스나 빈 객체에 추가하는 작업을 덜 수 있는 프로그래밍 스타일 입니다.
간단히 말하면 이 프로그래밍 스타일은 어떤 객체를 생성할 때 처음 그 객체의 클래스를 정의하지 않는 것을 허용합니다. 즉 인스턴스 기반 프로그래밍이라고도 합니다.
※ Statically Typed
→ Compile Time 시 타입이 결정
→ 정적 타이핑
※ Dynamically typed
→ Runtime 시 타입이 결정
→ 동적 타이핑
※ Compiler Language
→ 컴파일러 언어 (코드를 한번에 읽고 실행)
→ Typescript
※ Interpreter Language
→ 인터프리터 언어 (코드를 한줄 한줄 읽어가며 명령어를 처리 및 실행)
→ Javascript