|
440 | 440 | |
441 | 441 | --- |
442 | 442 |
|
443 | | - ### 1-3. 🛠️ [실전 가이드] tsconfig.json 설정 및 초정밀 분석 |
| 443 | + ### 1-3. 🛠️ [실전 가이드] tsconfig.json 설정: 새로운 나라의 헌법 제정 |
444 | 444 |
|
445 | | - |
446 | | - "Moltbot은 대형 프로젝트라서 이미 있었지만, **맨땅에서 시작하는 나만의 작은 앱**은 어떻게 하죠?" |
447 | | - |
448 | | - #### 1. 자동 생성 (가장 추천하는 시작법) |
449 | | - 터미널에 딱 한 줄만 입력하세요. TypeScript(tsc)가 알아서 "가장 표준적인" 설정 파일을 만들어줍니다. |
450 | | - |
| 445 | +"Moltbot은 대형 프로젝트라서 이미 설정이 다 되어있지만, **맨땅에서 시작하는 나만의 작은 앱**은 어떻게 시작하나요?" |
| 446 | +
|
| 447 | +**1. 은유(Metaphor): 새로운 국가를 세울 때의 "헌법 제정"** |
| 448 | +
|
| 449 | +백지에 그림을 그리는 것과 같습니다. 나라를 처음 세울 때, 우리 국민은 어떤 언어를 쓰고(Target), 주변 나라와는 어떻게 소통하며(Module), 범죄(Error)에는 얼마나 엄격할 것인지(Strict)를 정하는 **'국가 헌법'**을 만드는 과정이 바로 `tsconfig.json` 초기화입니다. 헌법이 모호하면 나라가 혼란에 빠지듯, 이 설정이 부실하면 개발 과정 내내 충돌이 일어납니다. |
| 450 | +
|
| 451 | +**2. 개념(Concept): 초기화의 두 가지 경로 (자동 vs 실전)** |
| 452 | +
|
| 453 | +TypeScript는 개발자가 처음부터 고생하지 않도록 **'표준 헌법 초안'**을 자동으로 생성해주는 도구(`npx tsc --init`)를 제공합니다. 초보자는 자동 생성된 초안에서 시작하고, 숙련자는 프로젝트의 목적(고성능 서버, 프론트엔드 등)에 맞춰 그 초안을 수정하여 사용합니다. |
| 454 | +
|
| 455 | +**3. 코드(Code): 헌법의 탄생과 핵심 3조항** |
| 456 | +
|
| 457 | +* **방법 A: 표준 초안 자동 생성 (권장)** |
| 458 | + 터미널에 다음 명령어를 입력하면 수많은 주석과 함께 설정 파일이 생성됩니다. |
451 | 459 | ```bash |
452 | 460 | npx tsc --init |
453 | 461 | ``` |
454 | | - |
455 | | - * **결과**: 수많은 주석이 달린 `tsconfig.json` 파일이 뿅! 하고 생깁니다. |
456 | | - * **장점**: 각 옵션이 무엇을 의미하는지 주석으로 다 설명되어 있어서 공부하기 좋습니다. 내가 몰랐던 옵션들을 발견할 수 있습니다. |
457 | | - |
458 | | - #### 2. 수동 생성 및 수정 (전문가가 되는 길) |
459 | | - 자동 생성된 파일은 "범용적"입니다. 하지만 OpenClaw(Moltbot)처럼 **고성능/최신 기술**을 쓰려면 몇 가지를 고쳐줘야 합니다. |
460 | | - |
461 | | - * **어디서부터 시작하나요?**: 프로젝트의 **루트 디렉토리** (package.json이 있는 곳)에 파일을 만드세요. |
462 | | - * **무슨 근거로 값을 정하나요? (The Rationale)**: |
463 | | - 1. **`target` (문법 수준)**: "내 서버의 Node.js 버전이 몇인가?" |
464 | | - * Node 14 쓰면? -> `ES2020` (Node 14가 알아듣는 한계) |
465 | | - * Node 20+ 쓰면? -> `ES2022` (최신 기능 다 써도 됨, 빠름) |
466 | | - 2. **`module` (소통 방식)**: "나는 최신식인가, 구식인가?" |
467 | | - * 요즘 대세 -> `NodeNext` (ESM 기반, OpenClaw(Moltbot)이 쓰는 것) |
468 | | - * 옛날 호환 -> `CommonJS` |
469 | | - 3. **`strict` (엄격함)**: "미래의 나를 믿는가?" |
470 | | - * `true`: "나는 나를 못 믿는다. 컴파일러야, 조금이라도 이상하면 다 잡아내라." (**강력 추천**, 나중에 프로젝트 커져도 리팩토링 비용 0원) |
471 | | - * `false`: "귀찮아, 대충 짜고 나중에 고칠게." (나중에 프로젝트 커지면 지옥 펼쳐짐) |
472 | | -
|
473 | | - **요약**: 작은 프로젝트라도 `npx tsc --init`으로 시작하고, `target: ES2022`, `module: NodeNext`, `strict: true` 이 세 가지만 켜주세요. 그러면 나중에 구글, 페이스북급으로 프로젝트가 커져도 끄떡없습니다. |
474 | 462 |
|
475 | | - --- |
| 463 | +* **방법 B: 실전 프로젝트 핵심 설정 (수동 수정)** |
| 464 | + 자동 생성된 파일에서 아래 **'핵심 3개 조항'**만은 반드시 확인하고 수정해 주세요. |
| 465 | + ```json |
| 466 | + { |
| 467 | + "compilerOptions": { |
| 468 | + "target": "ES2022", // [제1조] 사용할 언어의 문법 수준 (최신 사투리 인정) |
| 469 | + "module": "NodeNext", // [제2조] 소통 규약 (최신 스마트폰 규격 사용) |
| 470 | + "strict": true // [제3조] 법 집행의 엄격함 (무관용 원칙) |
| 471 | + } |
| 472 | + } |
| 473 | + ``` |
| 474 | +
|
| 475 | +**4. 배경 및 실전 가이드(Context & Guide): 왜 이 3가지인가?** |
| 476 | +
|
| 477 | +* **왜 `target: ES2022`인가?**: 과거에는 구식 브라우저를 위해 코드를 어렵게 번역해야 했습니다. 하지막 지금 우리가 만드는 서버(Node.js 22)는 똑똑합니다. 최신 문법을 그대로 써야 속도가 빠르고 코드가 깔끔해집니다. |
| 478 | +* **왜 `module: NodeNext`인가?**: 자바스크립트 세계는 지금 '구식(CommonJS)'과 '신식(ESM)'이 교체되는 과도기입니다. `NodeNext`는 "우리는 신식을 쓰되, 구식도 알아듣겠다"는 가장 현명한 중재안입니다. |
| 479 | +* **왜 `strict: true`인가?**: "대충 짜고 나중에 고치지 뭐"라는 생각은 개발자의 가장 큰 착각입니다. 처음부터 엄격하게 관리하는 것이, 나중에 버그를 찾느라 밤을 새우는 것보다 100배 경제적입니다. |
| 480 | +
|
| 481 | +> [!TIP] |
| 482 | +> **요약**: 작은 프로젝트라도 `npx tsc --init`으로 시작하고, **Target(최신), Module(NodeNext), Strict(True)** 이 세 가지만 기억하세요. 이것만으로도 여러분의 프로젝트는 구글이나 메타(Facebook) 부럽지 않은 튼튼한 기초를 갖추게 됩니다. |
476 | 483 |
|
477 | 484 | #### 1-3-1. TypeScript 설정 (`tsconfig.json`) - 아키텍처 심층 분석 |
478 | 485 |
|
|
0 commit comments