Blog

[TypeScript] 3. TypeScript 살펴보기

Category
Author
citeFred
citeFred
PinOnMain
1 more property
TypeScript 기본기 다지기
Table of Content

1. TypeScript 시작하기

새로운 프로젝트 (metaverse/greeter)
node 프로젝트 생성
npm init -y
Shell
복사
프로젝트에 타입스크립트 모듈 설치
npm i typescript
Shell
복사
src 폴더 생성 및 greeter.ts 파일 생성
function greeter(person: string) { return "Hello, " + person; } let user = "Fred User"; document.body.textContent = greeter(user);
TypeScript
복사
.ts TypeScript 파일만 가지고는 프로그램을 실행시킬 수 없다.
node greeter.ts
Shell
복사

2. TypeScript 파일 빌드

JavaScript 실행 환경
Node.js도 JavaScript 실행환경이기 때문에, TypeScript는 Node.js에서 실행되어야 한다. 하지만 이 상태로는 실행되지 않는다.
TypeScript는 JavaScript로 컴파일(번역)이 필요하다.
컴파일은 소스 코드를 다른 형태의 코드로 번역되는 과정을 의미 → 이 과정을 컴파일이라 부름
컴파일은 단순히 TypeScript→JavaScript 정도의 번역이 아니라 → 기계어, 바이트코드 등으로도 번역되는 과정도 모두 컴파일이라 함
Node.js는 JavaScript 레벨의 언어를 이해하기 때문에 컴파일링이 필요한 것
TSC 커맨드
TSC는 타입스크립트 컴파일러를 실행하는 명령어
이를 통해 .ts 파일을 .js 파일로 번역 할 수 있다. (현재는 수동으로 하고있다는 점 기억)
프로젝트에 타입스크립트 환경 설정
npx tsc --init
Shell
복사
위 명령어를 통해 tsconfig.json이라는 파일이 생성된 것을 확인
compilerOptions 등 코드를 통해서도 볼 수 있듯 컴파일과 관련된 것이 추가된 것을 볼 수 있음
이제 tsc로 명령어를 사용 할 수 있다.
npx는 로컬에 설치된 패키지를 실행하는 데 특화된 도구로 이 부분에서만 사용 될 수 있으니 알아두기만 할 것
npx tsc src/greeter.ts
Shell
복사
TypeScript → JavaScript로 번역된 파일 자동 생성 확인
TypeScript는 JavaScript로 컴파일(번역)이 필요하다.
컴파일은 소스 코드를 다른 형태의 코드로 번역되는 과정을 의미 → 이 과정을 컴파일이라 부름
컴파일은 단순히 TypeScript→JavaScript 정도의 번역이 아니라 → 기계어, 바이트코드 등으로도 번역되는 과정도 모두 컴파일이라 함
Node.js는 JavaScript가 실행되는 환경이므로 때문에 TypeScript는 컴파일링이 필요한 것
그럼 처음부터 JS로 만든 파일과 컴파일된 파일이 같다면?
처음부터 동일한 순수 자바스크립트 코드로 컴파일로 생성된 js파일과 동일한 코드라면, 동일한 상태로 실행된다.
이는 곧 TypeScript는 컴파일 전 및 진행 중에서의 타입 오류를 체크해주는 것일 뿐
그리고 TypeScript에서 지정했던 타입들이 컴파일을 통해 지워진 순수 자바스크립트로 나타나는 현상 = 지워진 타입이라고 함
이는 TypeScript는 방대한 JavaScript와 동일한 라이브러리를 공유할 수 있는 장점으로 부각됨
그럼 오류가 있는 상태에서 컴파일 하게 된다면?
아래와 같이 변수에 잘못된 자료형을 넣어보자
function greeter(person: string) { return "Hello, " + person; } let user = 1004; document.body.textContent = greeter(user);
Shell
복사
즉시 IDE는 오류를 발견하지만, 이 상태에서 컴파일 명령어를 실행한다면?
아래 명령어로 컴파일 실행
npx tsc greeter.ts
Shell
복사
오류 메시지도 나타나고 하지만,
컴파일 완료 된 .js 파일이 생성되는 것을 확인 할 수 있다.
이것이 의미하는 것
TypeScript는 프로그램 실행 전에 개발자에게 타입의 잘못된 부분을 알려주는 정도이며 타입 검사를 완전히 강제하지 않는다는 의미
TypeScript는 Java와 같은 엄격한 타입 시스템을 갖고 있지 않기 때문에, 개발자가 실수할 가능성이 여전히 존재
TypeScript는 JavaScript의 상위 집합으로 설계되었기 때문에, JavaScript의 유연성을 유지하면서도 타입 안전성을 제공하려는 가치관의 차이로도 볼 수 있음
Search
 | Main Page | Category |  Tags | About Me | Contact | Portfolio