개발새발

tsc와 tsconfigjson 본문

Typescript

tsc와 tsconfigjson

비숑주인 2025. 5. 10. 23:04

앞으로 jQuery 타입 선언 분석에 들어가기 전에, 타입스크립트 프로젝트의 기본 설정인 tsconfig.json과 tsc 명령어의 역할을 먼저 짚고 넘어가자. 이 글은 실무에서 자주 사용하는 설정들을 중심으로, 그 의미와 활용법을 정리한다.

 

프로젝트 초기화

먼저 프로젝트 폴더를 만들고 tsconfig.json 파일을 생성한다.

$ mkdir jquery
$ cd jquery
$ npx tsc --init

 

이 명령어는 tsconfig.json 파일을 생성하면서 기본적인 컴파일 옵션을 함께 설정해준다.

tsconfig.json 기본 옵션 설명

생성된 tsconfig.json 파일은 기본적으로 다음과 같은 옵션을 포함한다:

{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  }
}

 

각 항목은 다음과 같은 의미를 갖는다:

  • target: 어떤 버전의 JavaScript로 변환할지를 정한다. es2016은 let, const, Promise 등을 지원한다.
  • module: 어떤 모듈 시스템을 사용할지 설정한다. commonjs는 Node.js에서 사용하는 방식이다.
  • strict: 타입을 엄격하게 검사하도록 설정한다. 개발 초기부터 켜두는 것을 추천한다.
  • esModuleInterop: CommonJS 모듈을 ES 모듈처럼 import할 수 있게 한다.
  • skipLibCheck: 외부 타입 선언 파일(.d.ts)의 오류를 무시한다. 외부 라이브러리의 오류 때문에 개발이 중단되는 것을 방지한다.
  • forceConsistentCasingInFileNames: import 경로에서 대소문자를 일관되게 사용하도록 강제한다.

이 외의 옵션들은 주석 처리되어 있으며, 필요에 따라 활성화해서 사용할 수 있다.

TypeScript 코드 작성 및 변환

hello.ts 파일을 만들어보자.

// hello.ts
let str: 'hello' = 'hello';
str = 'world'; // ❌ 에러 발생

 

이 코드는 str 변수의 타입이 'hello'로 고정되어 있으므로, "world"를 할당하면 타입 에러가 발생한다.

컴파일 실행

$ npx tsc

 

터미널에는 다음과 같은 에러가 출력된다:

error TS2322: Type '"world"' is not assignable to type '"hello"'

 

하지만 JS는 생성됨

// hello.js
"use strict";
let str = 'hello';
str = 'world';

 

이처럼 타입 에러가 발생하더라도 .js 파일은 생성된다.

tsc 옵션 추가 사용법

타입 에러가 있을 때 JS 파일을 생성하지 않도록 하려면 다음과 같은 명령어를 사용할 수 있다.

--noEmit

 

타입만 검사하고 JS는 생성하지 않음:

$ npx tsc --noEmit

 

--noEmitOnError

 

타입 에러가 있을 경우에만 JS 생성을 막음

$ npx tsc --noEmitOnError

 

이 두 옵션은 tsconfig.json 파일에 아래와 같이 추가해 항상 적용할 수 있다:

{
  "compilerOptions": {
    ...
    "noEmitOnError": true
  }
}

 

JSON 파일을 import하고 싶다면

Node.js 환경에서는 .json 파일을 import하는 경우가 흔하다. TypeScript에서도 이를 지원하려면 다음 옵션을 활성화해야 한다:

{
  "compilerOptions": {
    ...
    "resolveJsonModule": true
  }
}

 

이 옵션을 활성화하면 .json 파일을 마치 JavaScript 객체처럼 타입 추론까지 적용하면서 사용할 수 있다.

'Typescript' 카테고리의 다른 글

jQuery 직접 타이핑하기  (0) 2025.05.10
jQuery 타입 분석하기  (0) 2025.05.10
bind 분석하기  (0) 2025.05.10
Promise, Awaited 타입 분석하기  (0) 2025.05.10
flat 분석하기  (0) 2025.05.10