TypeScript와 함께하는 Node.js
TypeScript란 무엇인가
TypeScript는 Microsoft에서 유지 관리하고 개발하는 오픈 소스 언어입니다. 전 세계 많은 소프트웨어 개발자들에게 사랑받고 사용되고 있습니다.
기본적으로 JavaScript의 상위 집합으로, 언어에 새로운 기능을 추가합니다. 가장 눈에 띄는 추가 기능은 일반 JavaScript에는 없는 정적 유형 정의입니다. 유형 덕분에 예를 들어 함수에서 어떤 종류의 인수를 예상하고 정확히 무엇을 반환하는지 또는 생성하는 객체의 정확한 모양을 선언할 수 있습니다. TypeScript는 매우 강력한 도구이며 JavaScript 프로젝트에서 새로운 가능성의 세계를 열어줍니다. 코드를 배송하기 전에도 많은 버그를 방지하여 코드를 더 안전하고 강력하게 만들 수 있습니다. 즉, 코드 개발 중에 문제를 포착하고 Visual Studio Code와 같은 코드 편집기와 훌륭하게 통합됩니다.
다른 TypeScript 이점에 대해서는 나중에 이야기하고, 지금은 몇 가지 예를 살펴봅시다!
예시
이 코드 스니펫을 보고 함께 분석해 봅시다.
type User = {
name: string
age: number
}
function isAdult(user: User): boolean {
return user.age >= 18
}
const justine: User = {
name: 'Justine',
age: 23,
}
const isJustineAnAdult: boolean = isAdult(justine)
첫 번째 부분(type
키워드 포함)은 사용자를 나타내는 사용자 지정 객체 유형을 선언하는 역할을 합니다. 나중에 새로 생성된 이 유형을 사용하여 User
유형의 인수 하나를 받고 boolean
을 반환하는 함수 isAdult
를 만듭니다. 그런 다음 이전 정의된 함수를 호출하는 데 사용할 수 있는 예시 데이터인 justine
을 만듭니다. 마지막으로 justine
이 성인인지 여부에 대한 정보로 새 변수를 만듭니다.
이 예시에서 알아야 할 추가 사항이 있습니다. 첫째, 선언된 유형을 준수하지 않으면 TypeScript가 뭔가 잘못되었다고 경고하고 오용을 방지합니다. 둘째, 모든 것을 명시적으로 입력해야 하는 것은 아닙니다. TypeScript는 매우 똑똑하고 유형을 추론할 수 있습니다. 예를 들어, 변수 isJustineAnAdult
는 명시적으로 입력하지 않더라도 부울 유형이 되고, justine
은 이 변수를 User
유형으로 선언하지 않았더라도 함수에 대한 유효한 인수가 됩니다.
좋습니다. TypeScript 코드가 있습니다. 이제 어떻게 실행할까요?
가장 먼저 해야 할 일은 프로젝트에 TypeScript를 설치하는 것입니다.
npm install -D typescript
이제 터미널에서 tsc
명령어를 사용하여 JavaScript로 컴파일할 수 있습니다. 해봅시다!
파일 이름이 example.ts
라고 가정하면 명령어는 다음과 같습니다.
npx tsc example.ts
TIP
npx는 여기에서 Node Package Execute를 나타냅니다. 이 도구를 사용하면 TypeScript 컴파일러를 전역적으로 설치하지 않고도 실행할 수 있습니다.
tsc
는 TypeScript 코드를 가져와 JavaScript로 컴파일하는 TypeScript 컴파일러입니다. 이 명령은 Node.js를 사용하여 실행할 수 있는 새 파일 example.js
를 생성합니다. 이제 TypeScript 코드를 컴파일하고 실행하는 방법을 알았으니 TypeScript 버그 방지 기능이 실제로 작동하는지 확인해 보겠습니다!
다음은 코드를 수정하는 방법입니다.
type User = {
name: string
age: number
}
function isAdult(user: User): boolean {
return user.age >= 18
}
const justine: User = {
name: 'Justine',
age: 'Secret!',
}
const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!")
다음은 TypeScript가 이에 대해 말하는 내용입니다.
example.ts:12:5 - error TS2322: Type 'string' is not assignable to type 'number'.
12 age: 'Secret!',
~~~
example.ts:3:5
3 age: number;
~~~
The expected type comes from property 'age' which is declared here on type 'User'
example.ts:15:7 - error TS2322: Type 'boolean' is not assignable to type 'string'.
15 const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");
~~~~~~~~~~~~~~~~
example.ts:15:51 - error TS2554: Expected 1 arguments, but got 2.
15 const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");
~~~~~~~~~~~~~~~~~~~~~~
Found 3 errors in the same file, starting at: example.ts:12
보시다시피 TypeScript는 예기치 않게 작동할 수 있는 코드를 배송하는 것을 성공적으로 방지합니다. 정말 멋집니다!
TypeScript에 대한 추가 정보
TypeScript는 인터페이스, 클래스, 유틸리티 타입 등과 같은 많은 훌륭한 메커니즘을 제공합니다. 또한 대규모 프로젝트에서는 TypeScript 컴파일러 구성을 별도의 파일에서 선언하고 작동 방식, 엄격도, 컴파일된 파일을 저장할 위치 등을 세밀하게 조정할 수 있습니다. 이 모든 훌륭한 기능에 대한 자세한 내용은 공식 TypeScript 문서에서 확인할 수 있습니다.
언급할 가치가 있는 TypeScript의 다른 이점으로는 점진적으로 도입할 수 있다는 점, 코드를 더 읽기 쉽고 이해하기 쉽게 만들 수 있다는 점, 개발자가 구형 Node.js 버전용 코드를 배포하면서 최신 언어 기능을 사용할 수 있다는 점 등이 있습니다.
Node.js에서 TypeScript 코드 실행하기
Node.js는 기본적으로 TypeScript를 실행할 수 없습니다. 명령줄에서 직접 node example.ts
를 호출할 수 없습니다. 그러나 이 문제에는 세 가지 해결책이 있습니다.
TypeScript를 JavaScript로 컴파일하기
Node.js에서 TypeScript 코드를 실행하려면 먼저 JavaScript로 컴파일해야 합니다. 앞서 설명한 것처럼 TypeScript 컴파일러 tsc
를 사용하여 이를 수행할 수 있습니다.
다음은 간단한 예입니다.
npx tsc example.ts
node example.js
ts-node
로 TypeScript 코드 실행하기
ts-node를 사용하여 TypeScript 코드를 먼저 컴파일할 필요 없이 Node.js에서 직접 실행할 수 있습니다. 하지만 코드를 타입 검사하지는 않습니다. 따라서 코드를 배포하기 전에 먼저 tsc
로 타입 검사한 다음 ts-node
로 실행하는 것이 좋습니다.
ts-node
를 사용하려면 먼저 설치해야 합니다.
npm install -D ts-node
그러면 다음과 같이 TypeScript 코드를 실행할 수 있습니다.
npx ts-node example.ts
tsx
로 TypeScript 코드 실행하기
tsx를 사용하여 TypeScript 코드를 먼저 컴파일할 필요 없이 Node.js에서 직접 실행할 수 있습니다. 하지만 코드를 타입 검사하지는 않습니다. 따라서 코드를 배포하기 전에 먼저 tsc
로 타입 검사한 다음 tsx
로 실행하는 것이 좋습니다.
tsx를 사용하려면 먼저 설치해야 합니다.
npm install -D tsx
그러면 다음과 같이 TypeScript 코드를 실행할 수 있습니다.
npx tsx example.ts
node
를 통해 tsx
를 사용하려면 --import
를 통해 tsx
를 등록할 수 있습니다.
node --import=tsx example.ts
Node.js 환경에서의 TypeScript
TypeScript는 Node.js 환경에서 확고히 자리 잡았으며 많은 기업, 오픈 소스 프로젝트, 도구 및 프레임워크에서 사용되고 있습니다. TypeScript를 사용하는 주목할 만한 오픈 소스 프로젝트의 몇 가지 예는 다음과 같습니다.
- NestJS - 확장 가능하고 잘 설계된 시스템을 쉽고 즐겁게 만들 수 있는 강력하고 완전한 기능을 갖춘 프레임워크
- TypeORM - Hibernate, Doctrine 또는 Entity Framework와 같은 다른 언어의 잘 알려진 도구의 영향을 받은 훌륭한 ORM
- Prisma - 선언적 데이터 모델, 생성된 마이그레이션 및 완전히 타입 안전한 데이터베이스 쿼리를 특징으로 하는 차세대 ORM
- RxJS - 반응형 프로그래밍을 위한 널리 사용되는 라이브러리
- AdonisJS - Node.js를 사용하는 모든 기능을 갖춘 웹 프레임워크
- FoalTs - 우아한 Node.js 프레임워크
그리고 훨씬 더 많은 훌륭한 프로젝트들이 있습니다... 어쩌면 당신의 다음 프로젝트도 그중 하나일 수 있습니다!