Skip to main content

Command Palette

Search for a command to run...

Hello TS World!

Published
2 min readView as Markdown
Hello TS World!
W

안녕하세요! 프론트엔드 개발자 woodstock입니다.

저는 매일 조금씩 발전하고자 하는 마음으로 개발공부를 시작했고, 이 블로그는 그 과정에서 배우고 성장하는 이야기를 담고 있습니다.

여러분의 피드백과 조언은 언제나 환영합니다! 함께 배우고 성장하는 과정을 즐길 수 있기를 기대합니다.

Hello TS World


실습 코드를 보관할 폴더 만들기

Documents(문서) 폴더 아래애 “onebite-typescript” 라는 이름의 폴더를 만든다.


Node.js 패키지 초기화

VSCode에서 방금 만든 onebite-typescript/section1 폴더를 연다.

그 다음 터미널을 열고 다음 명령어를 입력해 Node.js 패키지를 초기화한다.


@types/node 설치하기

새로운 타입스크립트 프로젝트(패키지)를 시작할 때 패키지 초기화 이후 가장 먼저 해야하는 것이 있다.

바로 Node.js 내장 기능들의 타입 정보를 담고있는 @types/node 라는 패키지를 설치하는 것이다.

@types/node 라이브러리는 Node.js가 제공하는 기본 기능(내장 함수, 클래스 등)에 대한 타입 정보를 가지고 있다.

만약 이 라이브러리를 설치하지 않으면 Node.js가 제공하는 console 등의 기본 기능(내장 함수 등)들의 타입이 선언되지 않아서 타입스크립트의 컴파일 과정에서 타입 검사가 실패하여 오류가 발생할 수 있다.

💡 이 패키지를 꼭 설치해야 하는 이유 타입스크립트는 코드를 실행하기 전에 타입을 올바르게 사용했는지 검사하는 ‘타입 검사’ 과정을 거친다. 이 검사 과정에서 타입이 선언되지 않은 코드를 만나게 되면 타입스크립트는 타입이 올바르게 사용 되지 않았다고 생각해 오류를 발생 시킨다. 따라서 Node.js의 기본 기능들을 위한 타입을 별도로 선언하기 위해 @types/node 패키지를 설치해야 한다.

@types/node가 성공적으로 설치되면 패키지의 node_modules 폴더에 @types 폴더가 생성된다.

폴더를 열어보면 Node.js가 기본적으로 제공하는 기능(내장 함수 등)들에 대한 타입이 선언되어 있는 여러개의 폴더와 파일들이 존재한다.

아래는 Node.js가 제공하는 console 함수에 대한 타입이 선언되어 있는node_modules/@types/console.d.ts 파일이다.


타입스크립트 컴파일러 설치하기

앞서 타입스크립트의 동작 원리에 대해 살펴볼 때 타입스크립트는 컴파일러에 의해서 자바스크립트로 변환한 다음에 실행한다고 살펴본 적 있다. 그래서 자바스크립트를 실행하기 위해 Node.js를 설치하는 것 처럼 타입스크립트를 컴파일 하기 위해서는 타입스크립트 패키지를 설치해 주어야 한다.

-g 옵션을 이용해 전역으로 설치한다. 이렇게 전역으로 패키지를 설치하면 마치 pc에 설치된 프로그램처럼(Node.js 처럼) 터미널에 패키지 이름을 호출해 사용할 수 있다.

참고로 macOS일 경우 sudo(관리자 권한) 옵션을 사용하므로 PC 패스워드를 물어볼 수 있다.

설치가 완료되면 제대로 설치 되었는지 확인하기 위해서 타입스크립트 컴파일러의 버전을 출력하는 다음 명령어를 입력해서 잘 설치 되었는지 확인한다.

타입스크립트 실행하기

타입스크립트 파일 만들기

패키지 루트 아래에 src 폴더를 생성한 다음 index.ts 파일을 생성하고 다음과 같이 작성한다.


tsc로 컴파일하고 실행하기

터미널에 tsc 파일명 을 입력해 이 타입스크립트 코드를 컴파일 한다.

컴파일이 완료되면 자바스크립트 파일 src/index.js 이 생성된다.

이렇게 컴파일 된 자바스크립트 코드는 node를 이용해 실행한다.

node 파일명 을 터미널에 입력해 src/index.js를 실행한다.


ts-node로 실행하기

앞서 타입스크립트 코드를 실행하기 위해 tsc를 이용해 타입스크립트 코드를 자바스크립트로 변환한 다음 변환된 자바스크립트 코드를 Node.js로 실행시켰다. 정리하면 tsc 그리고 node 2번의 명령어를 사용해 타입스크립트 코드를 실행했다.

ts-node는 한번에 타입스크립트코드를 컴파일부터 실행시키는 도구이다.

타입스크립트를 설치할 때와 동일하게 npm에 -g 옵션을 붙여 글로벌로 설치한다.

ts-node 파일명 을 이용해 타입스크리트 파일을 실행한다.

그 결과 자바스크립트 파일을 생성하지 않고 한번에 타입스크립트 파일을 실행한다.

이렇듯 ts-node를 이용하면 보다 쉽게 한번의 명령어로 타입스크립트를 실행할 수 있다.

TypeScript

Part 1 of 50

이 시리즈에서는 '한 입 크기로 잘라먹는 타입스크립트'의 강의 내용을 다룹니다. 타입스크립트의 문법과 동작원리를 학습한 내용을 기록합니다.

More from this blog

💥 new Array(length).map()으로 배열 초기화 시 콜백이 실행되지 않는 문제

JavaScript에서 배열을 초기화하려고 new Array(4).map(() => [])을 사용했는데 의도대로 동작하지 않았다. 원인을 찾아보니 JavaScript의 빈 슬롯과 undefined의 차이, 그리고 map() 메서드가 빈 슬롯에 대해 콜백을 실행하지 않는다는 특성때문이었다. 문제 상황 특정 크기의 배열을 만들고 각 요소를 []로 초기화 하려고 했다. const result = new Array(4).map(() => []); co...

Jun 28, 20252 min read17

💥 에러 메시지와 스택 트레이스 분석을 통해 문제 해결하기

JavaScript로 카드 게임 로직을 구현하던 중 TypeError: Cannot read properties of undefined라는 에러를 만났다. 코드가 복잡하고 짐작가는 부분이 단번에 떠오르지 않아 막막했는데, 에러 메세지와 스택 트레이스를 차근차근 분석해가며 원인을 찾아낸 과정을 기록해본다. 에러 발생 게임 로직을 테스트하던 중 특정 입력에서 다음과 같은 에러가 발생했다. TypeError: Cannot read properties...

Jun 25, 20254 min read11

🧐 적절한 함수명과 단일 책임으로 코드 개선하기

이 글에서는 JavaScript로 구현된 보드게임의 로직을 개선하는 과정을 다루며, 개선 과정은 함수명 개선 → 중복 제거 → 책임 분리의 단계로 이루어져있다. 작동하지만 개선이 필요한 코드 처음에 작성한 코드는 기능적으로는 문제없이 동작했지만, 더 나은 방식을 고민하다 보니 여러 개선점을 찾을 수 있었다. function checkLadder(position) { switch (position) { case 4: return 14;...

Jun 23, 20253 min read23

작심삼십일 - TypeScript 강의를 완강하다.

유데미 작심삼십일 챌린지에 참여하다 작심삼십일 챌린지는 유데미의 한국 런칭 3주년을 기념한 이벤트 중 하나로, 30일 동안 유데미 강의를 들으며 인증을 하는 챌린지이다.취업 준비를 하면서 여러가지 요인으로(주로 심리적이지만..) 학습 루틴이 망가졌던 찰나에 이 이벤트를 보게되었고, 마침 기존에 사두고 볼 엄두가 안 났던 타입스크립트 강의가 있었기에 옳다구나! 하고 신청했었다. 챌린지를 통해 무엇을 배웠나? 챌린지의 목표로 정한 강의는 유데미에...

Nov 18, 20242 min read58
작심삼십일 - TypeScript 강의를 완강하다.

woodstock's devlog

215 posts

안녕하세요! 프론트엔드 개발자 woodstock입니다.

제 블로그에서는 프론트엔드 개발에 대한 다양한 주제를 다룹니다.

JavaScript, TypeScript, React, Next.js 등의 기술을 활용하여 실제 프로젝트를 진행하면서 얻은 경험과 지식을 공유하고자 하며, 컴퓨터 과학(CS)의 기본 개념과 알고리즘, 자료구조 등에 대해서도 다룹니다.