πŸ“’[TypeScript λ§ˆμŠ€ν„° with Webpack & React] Step08.TypeScript 컴파일러

κΆŒμš©μ€€Β·2023λ…„ 12μ›” 6일
0
post-thumbnail

1. JavaScript μ»΄νŒŒμΌν•˜κΈ°


터미널에 μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜λ©΄

tsc --init

폴더에 λͺ‡λͺ‡ μ„€μ •κ³Ό 100μ—¬κ°œμ˜ 주석이 달린 tsconfig.json 파일이 생성될 것이닀.

tsconfigλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ λ³€ν™˜ν™œ λ•Œ 섀정을 μ •μ˜ν•΄λ†“μ€ νŒŒμΌμ΄λ‹€.

μ œλ„€λ¦­ tsc λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ λͺ¨λ“  .ts νŒŒμΌμ„ 컴파일링 ν•œλ‹€.

 tsc 

νŠΉμ • 파일 컴파일 λͺ…λ Ήμ–΄

tsc 파일λͺ….ts

ν•΄λ‹Ή 파일만 μ»΄νŒŒμΌλœλ‹€.

2.κ°μ‹œ λͺ¨λ“œ


단 ν•œ 번만 μ»΄νŒŒμΌν•˜μ§€ 말라고 μ§€μ‹œν•˜λŠ” μ˜΅μ…˜μ΄λ‹€.
TypeScriptκ°€ λ³€κ²½ 사항이 λ°œμƒν•˜λŠ”μ§€ 항상 κ°μ‹œν•˜κ³  ν•΄λ‹Ή νŒŒμΌμ„ λ³€κ²½ν•˜κ³  μ €μž₯ν•˜λ©΄ μžλ™μœΌλ‘œ λ‹€μ‹œ μ»΄νŒŒμΌν•˜λ„λ‘ ν•˜λŠ” λͺ…령어이닀.

tsc -w 파일λͺ….ts

3. 컴파일러 μ˜΅μ…˜


μ•žμ„œ λ§ν•œ tsc λͺ…λ Ήμ–΄λ‘œ νŒŒμΌμ„ 컴파일 ν•  수 μžˆμ§€λ§Œ μ—¬λŸ¬κ°œμ˜ 파일일 경우 ν•˜λ‚˜μ”© μ»΄νŒŒμΌν•˜κΈ° μ–΄λ ΅λ‹€.
νŠΉμ • μœ„μΉ˜λ§Œ μ»΄νŒŒμΌν•˜κ±°λ‚˜ νŠΉμ • νŒŒμΌμ„ λ¬΄μ‹œν•˜λ„λ‘ μ„€μ •ν•  수 μžˆλ‹€.

TypeScriptκ°€ νŠΉμ • ν•˜μœ„ μ§‘ν•©μ˜ 파일만 μ»΄νŒŒμΌν•˜λ„λ‘ μ„€μ •ν•˜λŠ” 방법


- Filesμ˜΅μ…˜


컴파일 ν•  λͺ¨λ“  νŒŒμΌμ„ λ‚˜μ—΄ν•œλ‹€.

tsconfig.json
{
  "compilerOptions": {},
  "files": [
    "core.ts",
    "sys.ts",
    "types.ts",
    "scanner.ts",
    "parser.ts",
    "utilities.ts",
    "binder.ts",
    "checker.ts",
    "tsc.ts"
  ]
}

files μ˜΅μ…˜μ€ 포함할 파일이 λ§Žμ§€ μ•Šμ€ μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈμ— μ ν•©ν•˜λ‹€.


- Includeμ˜΅μ…˜


컴파일 ν•  νŠΉμ • μœ„μΉ˜λ₯Ό μ§€μ •ν•œλ‹€.

include μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ Default 값은 λͺ¨λ“  νŒŒμΌμ„ 컴파일 ν•˜λ©°

파일 이름은 tsconfig.json이 ν¬ν•¨λœ 디렉터리λ₯Ό κΈ°μ€€μœΌλ‘œ κ²°μ •λ˜λ―€λ‘œ ν”„λ‘œμ νŠΈμ˜ μ΅œμƒμœ„ 폴더,즉 루트 디렉터리에 μ €μž₯ν•΄μ•Ό ν•œλ‹€.


tsconfig.json
{
  "include": ["src/**/*", "tests/**/*"]
}
디렉터리 ꡬ쑰
β”œβ”€β”€ scripts                β¨―
β”‚   β”œβ”€β”€ lint.ts            β¨―
β”‚   β”œβ”€β”€ update_deps.ts     β¨―
β”‚   └── utils.ts           β¨―
β”œβ”€β”€ src                    βœ“
β”‚   β”œβ”€β”€ client             βœ“
β”‚   β”‚    β”œβ”€β”€ index.ts      βœ“
β”‚   β”‚    └── utils.ts      βœ“
β”‚   β”œβ”€β”€ server             βœ“
β”‚   β”‚    └── index.ts      βœ“
β”œβ”€β”€ tests                  βœ“
β”‚   β”œβ”€β”€ app.test.ts        βœ“
β”‚   β”œβ”€β”€ utils.ts           βœ“
β”‚   └── tests.d.ts         βœ“
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
└── yarn.lock

- exclude

include μ˜΅μ…˜κ³Ό λ°˜λŒ€λ‘œ μ»΄νŒŒμΌν•  νŒŒμΌμ„ μ œμ™Έν•˜λŠ” μ˜΅μ…˜μ΄λ‹€.

{
  "include": ["src/**/*", "tests/**/*"]
  "exclude": [src/client/*, "node_modules"]
}
디렉터리 ꡬ쑰
β”œβ”€β”€ scripts                β¨―
β”‚   β”œβ”€β”€ lint.ts            β¨―
β”‚   β”œβ”€β”€ update_deps.ts     β¨―
β”‚   └── utils.ts           β¨―
β”œβ”€β”€ src                    βœ“
β”‚   β”œβ”€β”€ client             βœ“
β”‚   β”‚    β”œβ”€β”€ index.ts      β¨―
β”‚   β”‚    └── utils.ts      β¨―
β”‚   β”œβ”€β”€ server             βœ“
β”‚   β”‚    └── index.ts      βœ“
β”œβ”€β”€ tests                  βœ“
β”‚   β”œβ”€β”€ app.test.ts        βœ“
β”‚   β”œβ”€β”€ utils.ts           βœ“
β”‚   └── tests.d.ts         βœ“
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
└── yarn.lock

exclude μ‚¬μš©μ‹œ μ£Όμ˜ν•  점이 μžˆλŠ”λ°, include ν•­λͺ© 쀑 node_modules 디렉터리가 μžˆλ‹€λ©΄ λ°˜λ“œμ‹œ μ œμ™Έν•΄μ„œ μ˜μ‘΄μ„±μ΄ μ»΄νŒŒμΌλ˜μ§€ μ•Šλ„λ‘ ν•΄μ•Όν•œλ‹€.

- outDir μ˜΅μ…˜

TypeScriptκ°€ 컴파일된 Javascript νŒŒμΌμ„ 내보낼 μœ„μΉ˜λ₯Ό μ§€μ •ν•œλ‹€.

λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œλŠ” 보톡 src 디렉터리 λ˜λŠ” νŠΉμ • 디렉터리에 TypeScript νŒŒμΌμ„ λͺ¨μ•„두며 TypeScript νŒŒμΌμ— μ‚¬μ‘ν•˜λŠ” Javascript νŒŒμΌμ€ λ³„λ„μ˜ 디렉터리에 μ»΄νŒŒμΌν•˜λ©° 보톡 디렉터리 이름은 dist둜 μ‚¬μš©λœλ‹€.

TypeScript 디렉터리 이름 : src

JavaScript 디렉터리 이름 : dist

tsconfig.json
"outDir" : "./dist"

- target μ˜΅μ…˜

TypeScriptλ₯Ό μ»΄νŒŒμΌν•œ JavaScript의 버전을 μ œμ–΄ν•˜λŠ” μ˜΅μ…˜μ΄λ‹€.

tsconfig.json
"target" : "es6"

- lib μ˜΅μ…˜

tsconfig.json
"lib" : [
  "dom",
  "es5"
]

lib μ˜΅μ…˜μ˜ 기본값은 target ν•­λͺ©μ—μ„œ μ§€μ •ν•œ ECMAScript의 버전에 따라 기본값이 μ •μ˜λ©λ‹ˆλ‹€.
λŒ€λΆ€λΆ„μ˜ 경우 κΈ°λ³Έκ°’λ§Œ μ‚¬μš©ν•˜μ§€λ§Œ TypeScript 라이브러리λ₯Ό μ»€μŠ€ν…€ν•˜κ²Œ μ“°λ €κ³  ν•  λ•Œ, lib을 μ •μ˜ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

- strict μ˜΅μ…˜

TypeScript μ „μ²΄μ˜ νƒ€μž… 검사 μΆ”κ°€κ·œμΉ™,μ œμ•½ 쑰건이 ν™œμ„±ν™” λœλ‹€. 즉, νƒ€μž… 검사λ₯Ό 보닀 μ—„κ²©ν•˜κ²Œ λ§Œλ“€λ©°
ν”„λ‘œκ·Έλž¨μ˜ 정확성을 λ†’μ΄λŠ” 것이 핡심이닀.

tsconfig.json
"strict" : true
profile
Brendan Eich, Jordan Walke, Evan You, κΆŒμš©μ€€

0개의 λŒ“κΈ€