2025년 2월 17일 시작
타입스크립트 창시자: 앤더스 하일스버그(Anders Hejlsberg)
타입스크립트 = 오픈소스
매년 전 세계 자바스크립트 개발자들을 대상으로 설문을 조사하는 공신력 있는 단체의 2022년 설문 결과에서 현재 100명의 자바스립트 개발자 중에 89명이 타입스크립트를 쓰고 있을만큼 인기 있음
타입스크립트 = 자바스크립트의 확장판
위의 사진을 보았을 때, 자바스크립트에서는 타입을 지정하지 않았지만 타입스크립트는 숫자 타입을 지정해서 숫자만 들어갈 수 있게 안전하게 만들었음
타입을 정의하는 문법을 추가한 것
타입스크립트는 자바스크립트의 확장판이기 때문에 자바스크립트의 기본적인 모든 문법을 포함함
자바스크립트는 원래 아주 간단한 상호작용 정도를 처리하기 위해 개발되었다고 한다.
자바스크립트는 처음에 웹 브라우저 안에서만 동작하도록 만들어졌음
그런데 어느날, node.js가 등장함
node.js는 자바스크립트의 런타임(즉, 실행 환경)임
자바스크립트 코드를 어디서든 실행할 수 있도록 만들어주는 구동기임 -> 어디서든 자바스크립트 구동 가능하게 됨 -> 이제 무엇이든 자바스크립트로 만들 수 있다는 소리!
프로그래머들이 자바스크립트를 이용해서 다양한것들을 만듦 (웹서버, 모바일 앱, 데스크탑 앱 등)
그런데 자바스크립트는 엄격한 문법을 지켜 만들어졌지 않기 때문에 버그 발생이 높아졌음 -> 프로그램의 전체적인 안정성이 떨어지는 단점이 됨
따라서, 자바스크립트의 기존 문법과 매력은 그대로 둔채, 안정성을 확보하기 위해 타입스크립트가 탄생하게 됨!!!
모든 프로그래밍 언어는 타입 시스템을 가지고 있음
타입 시스템의 종류
자바스크립트는 동적 타입 시스템임
let a = 'hello';
let a = 'hello'; // 문자열
a = 123; // 숫자
let a = 'hello'; // 문자열
a = 123; // 숫자
a.toUpperCase();
Type Error 발생 -> 오류가 발생하기는 하지만 실행됨
애초에 오류가 발생할 코드였다면 실행전에 오류가 발생해서 실행하지 못하도록 만드는게 좋음 -> 복잡한 코드일 경우, 나중에 예상치 못한 오류가 발생해서 프로그램이 강제적으로 서비스가 마비될 수도 있음
정적 타입 시스템의 언어일 경우, 위에서 설명했듯 런타임 이전에 타입을 검사하기 때문에 이런 상황을 방지할 수 있음
String a = 'hello';
int b = 123;
String a = 'hello';
int b = 123;
int c = a * b; // 오류 발생
에디터 상에서 오류가 발생했다는걸 직관적으로 보여줌 -> 오류가 있다면 애초에 실행이 안됨
그러나, 모든 변수에 타입을 다 지정해주어야함 = 타이핑 양이 매우 증가함
타입스크립트는 동적 타입 시스템과 정적 타입 시스템의 두 가지 장점을 사용할 수 있게 함
let a: number = 1;
a.toUpperCase(); // 오류
let a = 1;
a.toUpperCase(); // 오류
대다수의 프로그래밍 언어는 어떻게 동작할까?
컴파일러 : 컴파일 하는 친구
컴파일 과정
타입스크립트의 컴파일 과정
타입스크립트의 실행 과정
npm init
npm i @types/node
sudo npm i typescript -g
코드 작성
console.log('Hello TypeScript');
const a: number = 1;
tsc src/index.ts
node src/index.js
sudo npm i tsx -g
tsx src/index.ts