๋ฐฉํ ๋์ ์กฐ๊ธ ๋ฐ๋ ธ๋ ํ์
์คํฌ๋ฆฝํธ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ๋ค.
์ด์ ๋ ๋ฉํ ๋๊ณผ์ ๊ฐ์ธ ๋ฉด๋ด๋ ์งํํ์๋ค.
๊ตฌ์ฒด์ ์ธ ์ทจ์ค ๋ฐฉํฅ์ฑ๊ณผ ํฌํธํด๋ฆฌ์ค ์ค๋น ๋ฐฉ๋ฒ์ ๋ํด์ ํผ๋๋ฐฑ์ ๋ฐ์๋ค.
ํ ์ผ์ด ๋ฌด์ํ๊ฒ ๋ง์ง๋ง ๋น๋๊ธฐ์ ์ผ๋ก ํ๋์ฉ ์ฒ๋ฆฌํด๋๊ฐ๋ค๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ผ๋ฅ๊ฐ ๋์ด ๊ฐ ์ ์๋ค๋ ๋ฏฟ์์ ์ ์งํด๋ณด๋ ค๊ณ ํ๋ค.
์ง์์ธ์ฌ์ด๋๋ผ๋ ์ ํ๋ธ ์ฑ๋์์ ๋ฐ๋ฌธํธ ๋ฐ์ฌ๋์ด '์ผ๋ฅ์ ์กฐ๊ฑด'์ด๋ผ๋ ์ฑ
์ ์ถ์ฒํ๋ฉด์ ์ด๋ฐ ๋ง์ ํ๋ค.
์ผ๋ฅ์ธ ์ฌ๋๋ค์ 3๊ฐ์ง ํ์ ๊ฐ์ง๊ณ ์์ด์. ํ์น๋ ํ, ์์ฝํ๋ ํ, ์ด๊ฒ์ ์ถ์งํ๋ ํ ์ด๋ ๊ฒ 3๊ฐ์ง์ ๋๋ค.
๋ด๊ฐ TIL์ ์์ฑํ๋ ๊ฒ๋ ๊ฐ์๋ ํ๋ก์ ํธ๋ฅผ ํตํด ๋ฌด์ํ ๋ง์ ์ง์์ ํ์น๊ณ ๋์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก์์ ์ปค๋ฆฌ์ด๋ฅผ ์ถ์งํ๋ ค๊ณ ํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์์ง๊น์ง๋ ์ค์ํ ๊ฒ์ ์ผ๋ชฉ์์ฐํ๊ฒ ์์ฝํด์ ์์ฑํ๋ ๊ฒ์ด ๋ถ์กฑํ ๊ฒ ๊ฐ๋ค.
๋ฐ๋ผ์ ๋ง์ ๋ด์ฉ์ ๋ฐฐ์ฐ๋๋ผ๋ ๊ทธ ์ค์์ ์ค์ํ ๊ฒ์ ๋ฝ์ ์์ฝํด์ ํ์น๋ ค๊ณ ๋
ธ๋ ฅํด๋ณด๋ ค๊ณ ํ๋ค.
2023.11.14 ๊ฐ์
- Typescript์์์ ๋ชจ๋์ import, export ํด์ค๋ ๋ฒ์ JS์ ๊ตฌ๋ถํ์ฌ ์ ์ ์์๋ค.
tsconfig.json
ํ์ผ ๋ด์์ ์ค์ ์์ฑ๋ค์ ์ข ๋ฅ์ ๊ถ์ฅ ์ค์ ๋ฐฉ๋ฒ์ ์ ์ ์์๋ค.- ํ์ ์คํฌ๋ฆฝํธ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋์ด ์๋ ์ ํธ๋ฆฌํฐ ํ์ ๋ค์ ์์๋ณด์๋ค. ์ ๋์จ ํ์ ์ด๋ ์ธํฐํ์ด์ค๋ฅผ ์์ ์์ฌ๋ก ๋ค๋ฃฐ ๋ ํจ์์ฒ๋ผ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ ๊ฐ๋ค.
๋ชจ๋ํํด์ ๊ฐ์ ธ์ฌ ๋๋ ํด๋น ๋ชจ๋ ๋ด ํ์ ์ ์ง์ ํด์ค ๋ค์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
๊ธฐ์กด์ ์๋ ๋ชจ๋์ npm์ผ๋ก ๋ค์ด๋ก๋ํด์ ๊ฐ์ ธ์ฌ ๋๋ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์
์ ์ง์ ํด์ค์ผ ํ๋ค.
ํ์ง๋ง ์ด๊ฒ๋ค์ ๋ชจ๋ ์ผ์ผ์ด ๋ค ์ง์ ํด์ฃผ๋ ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฏ๋ก ์ด์ ์ ํ์
์ ์ง์ ํด๋์ ํ์
๋ญ์น๋ค์ ํ์ธํ ์ ์๋ค.
๋ชจ๋๋ช
npm
์ผ๋ก ๊ตฌ๊ธ์ ๊ฒ์ํด๋ณด๋ฉด ํด๋น ๋ชจ๋์ ๋ํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋๋ฐ
์ด ๋ ๋ชจ๋๋ช
์์ TS ์์ด์ฝ์ด ์๋ค๋ฉด ํ์
์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ๋ชจ๋์ด๋ฏ๋ก ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ง๋ง ๊ทธ๋ ์ง ์๊ณ DT(Definitely Typed) ์์ด์ฝ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ๋ชจ๋์ด์ง๋ง ์ด์ ์ ๋๊ตฐ๊ฐ ํ์
์ ์ค์ ํด ๋์ d.ts ํ์ผ์ด ์กด์ฌํ๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด ๋๋ค!
๊ธฐ๋ณธ์ ์ผ๋ก JS์์ ๋ณ์๋ ํจ์๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ด๋ณด๋ด๊ธฐํ๋ ๊ฒ๊ณผ ๋ฌธ๋ฒ์ ๋์ผํ๋ค.
// myUtils.ts ๋ด๋ณด๋ด๊ธฐ
export interface Add {
(a: number, b: number): number
}
export interface Subtract {
(a: number, b: number): number
}
export const add: Add = (a, b) => a + b
export const subtract: Subtract = (a, b) => a - b
// ...
// ํ์ฅ์ ts๋ ์ผ๋ฐ์ ์ผ๋ก ๋ถ์ด์ง ์๋๋ค.
import { add, subtract, Add, Subtract } from './myUtils'
์ฌ๋ฌ ์ธํฐํ์ด์ค์ ์ด๋ฆ์ด ๋ค๋ฅธ ํจ์์ ์ด๋ฆ๊ณผ ๊ฒน์ณ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ํ๋์ ๋ญ์น๋ก ๋ฌถ๋ ์ญํ ์ ํ๋ ๊ฒ์ด namespace์ด๋ค.
export namespace Utils {
// ๊ฐ๊ฐ์ interface์๋ export๋ฅผ ์์ ๋ถ์ฌ์ผ ํ๋ค.
export interface Add {
(a: number, b: number): number
}
export interface Subtract {
(a: number, b: number): number
}
}
ํฌ๊ฒ 5๊ฐ์ง์ ์ต์ ์ด ์๋ค.
๊ทธ ์ค ์ปดํ์ผ ์ต์
์ ๋ํด์ ์ข ๋ ์์ธํ ์์๋ณด์๋ค.
์์ผ๋ก ํ์
์คํฌ๋ฆฝํธ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ ๋๋ฅผ ๋๋นํด ์ ์์๋์ด์ผ๊ฒ ๋ค.
strict : ์๊ฒฉ ๋ฌธ๋ฒ ์ ์ฉ ์ฌ๋ถ, ๊ธฐ๋ณธ๊ฐ์ false
target : ์ปดํ์ผํ ๋ ์ ์ฉํ ES ๋ฒ์ ์ค์ , "ES2015" ๊ถ์ฅ
lib : ์ปดํ์ผ์์ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐฐ์ด๋ก ์ง์
["ESNext", "DOM", "DOM.Iterable"]
๋ฅผ ๊ถ์ฅํ๋ค.
"DOM"๊ณผ "DOM.Iterable"์ ํ์
์คํฌ๋ฆฝํธ์์ DOM ์์๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด์๋ ๊ฑฐ์ ํ์์ ์ด๋ค.
module : ์ฌ์ฉํ ๋ชจ๋ ๋ฐฉ์์ ์ง์ ํ๋ค.
'CommonJS', 'ES6' / 'ES2015', 'ES2020', 'ESNext'๋ฅผ ์ค์ ๊ฐ๋ฅํ๋ค.
'ESNext'๋ฅผ ์ง์ ํ๋ฉด ๊ฐ์ฅ ์ต์ ๋ชจ๋ ๋ฐฉ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
moduleResolution : ์ปดํ์ผ๋ฌ ๋ชจ๋ ํด์ ๋ฐฉ์์ ์ง์ ํ๋ค.
'node', 'bundler'(ts ๋ฒ์ 5.0 ์ด์๋ถํฐ ๊ฐ๋ฅ)๋ฅผ ์ถ์ฒํ๋ค.
paths : ๊ฒฝ๋ก ๋ณ์นญ์ ์ง์ ํ๋ค. import ๊ฒฝ๋ก๊ฐ ๊ธธ ๊ฒฝ์ฐ ์ถ์ฝํ ์ ์๋ค.
~
ํธ๋ ๊ธฐํธ๋ฅผ ํตํด ํด๋ ๊ฒฝ๋ก๋ ์ถ์ฝ ๊ฐ๋ฅํ๋ค.
ex) "~/*": ["./src/*"]
์ฌ๊ธฐ์๋ ./src
๊ฐ ํธ๋ ๊ธฐํธ๋ก ๋์ฒด๋๋ค.
jsx : ๋ฆฌ์กํธ์์ ์ฌ์ฉ๋๋ jsx ์ถ๋ ฅ ๋ฐฉ์์ ์ ์ดํ๋ค. ์์ผ๋ก ๋ฆฌ์กํธ ํ๋ ์์ํฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก ํด๋น ์ค์ ์ ์ ์ง์ ํด์ผ ํ๋ค.
ํ์ ์คํฌ๋ฆฝํธ์๋ ์ ์ฉํ๊ฒ ์ธ ์ ์๋ ๋ด์ฅ ์ ํธ๋ฆฌํฐ ํ์ ์ด ์๋ค. ๋ฌด์ํ ๋ด์ฅ ์ ํธ๋ฆฌํฐ ํ์ ์ค ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒ์ ์์๋ณด์๋ค.
Record<์ ๋์จํ์
๋ช
, ํ์
>
์ผ๋ก ์ ๋์จ ๋ฆฌํฐ๋ด ํ์
์ ์์ฑ์ผ๋ก ๊ฐ๊ฐ ์ง์ ํ ํ์
์ ๊ฐ์ง๋ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํ๋ค.typeof
ํค์๋๋ก ๊ฐ์ ธ์์ผ ํจ)์์ ๋ฐํ๊ฐ ํ์
์ ๊ฐ์ ธ์จ๋ค.await
๋์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ํ๋ก์ ํธ์์ ๋น๋๊ธฐ ํต์ ์ผ๋ก ๊ฐ์ ธ์ค๋ ๋ฐ์ดํฐ์ ๋ํด์๋ Awaited
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.์ ์ด ๋๊ณ ๋ณด๋ ์์ฒญ ๋ง๋ค. ์์ฃผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ๋ ค๋ ์ด ์ ๋๋ผ๋.. ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์๋ฌ์์ผ์ผ๊ฒ ๋ค.
๊ฐ์ฌ๋์ด ์์๋ก ๋ณด์ฌ์ค ๊ฒ์ ์ดํด๊ฐ ๋์ผ๋ ๋ง์ ํ๋ก์ ํธ์ ๋์ ํด์ ๋ชจ๋์ import, exportํ๋ ค๊ณ ํ๋ฉด 99.9% ์๋ฌ๋ฅผ ๊ฒช์ ๊ฑฐ ๊ฐ๋ค. ์ดํ ์งํํ ๊ฐ์ธ ํฌํด์ฉ ํ๋ก์ ํธ์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฉํด๋ณด๊ณ ๋ชจ๋ํ๋ ์งํํด๋ด์ผ๊ฒ ๋ค.
๋ฐฉํ์ด๋ผ ์กฐ๊ธ ํด์ดํด์ง ๊ฒ๋ ์์ง๋ง ๊ทธ๋๋ ์ฝ๋ฉ์ ์์ ์์ ๋์ง ์๊ณ ์๋ ๊ฑด ์ํ๋ ๊ฒ ๊ฐ๋ค. ํ ๋ฒ ๋์๋ฒ๋ฆฌ๋ฉด ๊ด์ฑ์ด ์๊ฒจ ํ๋์ ๋์ด์ง ๊ฒ์ด ๋ถ๋ช ํ ๊ฑธ ๋ ์๊ณ ์๊ธฐ ๋๋ฌธ...
๋ฉํ ๋๊ณผ์ ๊ฐ์ธ ๋ฉด๋ด์์ ๊ฐ์ธ ํฌํด ์ค๋น์ ๋ํด ์์ง ๋ด๊ฐ ๊ฑฐ์ ์ค๋น๋ ๊ฒ์ด ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค. ์ด์ ๋ถํฐ๋ผ๋ ์ง์ง ๋ด ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด์ ๊ฐ๋ฐ์๋ก์์ ํฌํธํด๋ฆฌ์ค๋ฅผ ๋ง๋ค๊ณ ์ด๋๋ ์ง์ํด๋ด์ผ๊ฒ ๋ค.
ํ์ ์คํฌ๋ฆฝํธ๋ก ํ์ ์ ๋ค๋ฃจ๋ ๊ฒ์ ๋ํ ์ด๋ก ๊ฐ๋ ์ ์ค์ํ ๊ฒ์ ๊ฑฐ์ ๋ฐฐ์ด ๊ฒ ๊ฐ๋ค. ์ด์ ์ด๊ฒ์ ์ ์จ๋จน์ด๋ณด์.
๐ ํด๋น ๋ด์ฉ์ ๊ณต๋ถํ๋ฉด์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ํ๋ฆฐ ๋ถ๋ถ์ด๋ ์คํดํ๊ณ ์๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ํผ๋๋ฐฑ ๋ถํ๋๋ฆฝ๋๋ค.