๐Ÿ” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค FE ๋ฐ๋ธŒ์ฝ”์Šค 5๊ธฐ TIL | TypeScript ๋ชจ๋“ˆ, tsconfig.json, ๋‚ด์žฅ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…

Jun 2k (Jun2)ยท2023๋…„ 11์›” 16์ผ
0
post-thumbnail

๐Ÿ’ป Intro & TMI

๋ฐฉํ•™ ๋™์•ˆ ์กฐ๊ธˆ ๋ฐ€๋ ธ๋˜ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ–ˆ๋‹ค.
์–ด์ œ๋Š” ๋ฉ˜ํ† ๋‹˜๊ณผ์˜ ๊ฐœ์ธ ๋ฉด๋‹ด๋„ ์ง„ํ–‰ํ–ˆ์—ˆ๋‹ค.
๊ตฌ์ฒด์ ์ธ ์ทจ์ค€ ๋ฐฉํ–ฅ์„ฑ๊ณผ ํฌํŠธํด๋ฆฌ์˜ค ์ค€๋น„ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜๋‹ค.
ํ•  ์ผ์ด ๋ฌด์ˆ˜ํ•˜๊ฒŒ ๋งŽ์ง€๋งŒ ๋น„๋™๊ธฐ์ ์œผ๋กœ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•ด๋‚˜๊ฐ€๋‹ค๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ผ๋ฅ˜๊ฐ€ ๋˜์–ด ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฏฟ์Œ์„ ์œ ์ง€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.
์ง€์‹์ธ์‚ฌ์ด๋“œ๋ผ๋Š” ์œ ํŠœ๋ธŒ ์ฑ„๋„์—์„œ ๋ฐ•๋ฌธํ˜ธ ๋ฐ•์‚ฌ๋‹˜์ด '์ผ๋ฅ˜์˜ ์กฐ๊ฑด'์ด๋ผ๋Š” ์ฑ…์„ ์ถ”์ฒœํ•˜๋ฉด์„œ ์ด๋Ÿฐ ๋ง์„ ํ–ˆ๋‹ค.

์ผ๋ฅ˜์ธ ์‚ฌ๋žŒ๋“ค์€ 3๊ฐ€์ง€ ํž˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์š”. ํ›”์น˜๋Š” ํž˜, ์š”์•ฝํ•˜๋Š” ํž˜, ์ด๊ฒƒ์„ ์ถ”์ง„ํ•˜๋Š” ํž˜ ์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ TIL์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ•์˜๋‚˜ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ์ง€์‹์„ ํ›”์น˜๊ณ  ๋‚˜์˜ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ์ปค๋ฆฌ์–ด๋ฅผ ์ถ”์ง„ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
ํ•˜์ง€๋งŒ ์•„์ง๊นŒ์ง€๋„ ์ค‘์š”ํ•œ ๊ฒƒ์„ ์ผ๋ชฉ์š”์—ฐํ•˜๊ฒŒ ์š”์•ฝํ•ด์„œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค.
๋”ฐ๋ผ์„œ ๋งŽ์€ ๋‚ด์šฉ์„ ๋ฐฐ์šฐ๋”๋ผ๋„ ๊ทธ ์ค‘์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์„ ๋ฝ‘์•„ ์š”์•ฝํ•ด์„œ ํ›”์น˜๋ ค๊ณ  ๋…ธ๋ ฅํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.



๐Ÿง ์˜ค๋Š˜ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ๊ฒƒ

2023.11.14 ๊ฐ•์˜

  • Typescript์—์„œ์˜ ๋ชจ๋“ˆ์„ import, export ํ•ด์˜ค๋Š” ๋ฒ•์„ JS์™€ ๊ตฌ๋ถ„ํ•˜์—ฌ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • tsconfig.json ํŒŒ์ผ ๋‚ด์—์„œ ์„ค์ • ์†์„ฑ๋“ค์˜ ์ข…๋ฅ˜์™€ ๊ถŒ์žฅ ์„ค์ • ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…๋“ค์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์œ ๋‹ˆ์˜จ ํƒ€์ž…์ด๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž์œ ์ž์žฌ๋กœ ๋‹ค๋ฃฐ ๋•Œ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™๋‹ค.

TypeScript์—์„œ ๋ชจ๋“ˆ

๋ชจ๋“ˆํ™”ํ•ด์„œ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” ํ•ด๋‹น ๋ชจ๋“ˆ ๋‚ด ํƒ€์ž…์„ ์ง€์ •ํ•ด์ค€ ๋’ค์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด์— ์žˆ๋Š” ๋ชจ๋“ˆ์„ 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

์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ด๋ฆ„์ด ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ด๋ฆ„๊ณผ ๊ฒน์ณ์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ๋ญ‰์น˜๋กœ ๋ฌถ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด namespace์ด๋‹ค.

export namespace Utils {
  // ๊ฐ๊ฐ์˜ interface์—๋„ export๋ฅผ ์•ž์— ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค.
  export interface Add {
    (a: number, b: number): number
  }

  export interface Subtract {
    (a: number, b: number): number
  }
}

tsconfig.json ๋‚ด์˜ ๋‹ค์–‘ํ•œ ์˜ต์…˜

ํฌ๊ฒŒ 5๊ฐ€์ง€์˜ ์˜ต์…˜์ด ์žˆ๋‹ค.

  1. compilerOptions : TS๋ฅผ JS๋กœ ์ปดํŒŒ์ผํ•  ๋•Œ ์ ์šฉํ•˜๋Š” ์˜ต์…˜
  2. files : ๋ณ€ํ™˜ํ•˜๋Š” ํŒŒ์ผ์„ ์ง€์ •ํ•œ๋‹ค. ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. ์ด๊ฑด ํŒŒ์ผ ๋‹จ์œ„.
  3. exclude : ์ œ์™ธํ•˜๋Š” ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  4. include : ๋ณ€ํ™˜ํ•˜๋Š” ํŒŒ์ผ์„ ํด๋” ๋‹จ์œ„๋กœ ์ง€์ •ํ•œ๋‹ค.
  5. extends : tsconfig.json ์™ธ์— ๋‹ค๋ฅธ ์„ค์ • ํŒŒ์ผ์„ ํ™•์žฅํ•ด์„œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    ๋‹จ, ๊ธฐ์กด tsconfig.json๊ณผ ๋‹ค๋ฅธ ์„ค์ • ํŒŒ์ผ์—์„œ์˜ ์„ค์ •๋ช…์ด ๊ฒน์น  ๊ฒฝ์šฐ ๊ธฐ์กด ํŒŒ์ผ์˜ ์„ค์ •์„ ๋ฎ์–ด์“ด๋‹ค.
  • files, exclude, include ์ˆœ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ ์šฉ๋œ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด include์— ํฌํ•จ๋˜์–ด ์žˆ์–ด๋„ exclude์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ์ œ์™ธ๋œ๋‹ค.

compilerOptions

๊ทธ ์ค‘ ์ปดํŒŒ์ผ ์˜ต์…˜์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด์•˜๋‹ค.
์•ž์œผ๋กœ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ๋ฅผ ๋Œ€๋น„ํ•ด ์ž˜ ์•Œ์•„๋‘์–ด์•ผ๊ฒ ๋‹ค.

  • 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 ์ถœ๋ ฅ ๋ฐฉ์‹์„ ์ œ์–ดํ•œ๋‹ค. ์•ž์œผ๋กœ ๋ฆฌ์•กํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ ํ•ด๋‹น ์„ค์ •์„ ์ž˜ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.


๋‚ด์žฅ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—๋Š” ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋‚ด์žฅ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์ด ์žˆ๋‹ค. ๋ฌด์ˆ˜ํ•œ ๋‚ด์žฅ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž… ์ค‘ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์•Œ์•„๋ณด์•˜๋‹ค.

  • Partial : ์ธํ„ฐํŽ˜์ด์Šค ํ•„์ˆ˜ ์†์„ฑ์„ ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์†์„ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•œ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ ๋‹ค.
  • Required : ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์†์„ฑ์„ ์ „๋ถ€ ํ•„์ˆ˜ ์†์„ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•œ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ ๋‹ค.
  • Readonly : ๋ง ๊ทธ๋Œ€๋กœ ํƒ€์ž… ๋‚ด ์†์„ฑ์„ ๋ฐ”๊พธ์ง€ ๋ชปํ•˜๋„๋ก ํ•œ๋‹ค.
  • Record : Record<์œ ๋‹ˆ์˜จํƒ€์ž…๋ช…, ํƒ€์ž…>์œผ๋กœ ์œ ๋‹ˆ์˜จ ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž…์„ ์†์„ฑ์œผ๋กœ ๊ฐ๊ฐ ์ง€์ •ํ•œ ํƒ€์ž…์„ ๊ฐ€์ง€๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • Pick : ์ฃผ์–ด์ง„ ๊ฐ์ฒด ํƒ€์ž…์—์„œ ์›ํ•˜๋Š” ์†์„ฑ๋งŒ ๋ฝ‘์•„์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด ํƒ€์ž…์„ ๋งŒ๋“ ๋‹ค.
  • Omit : Pick๊ณผ ๋ฐ˜๋Œ€, ์ œ์™ธํ•  ์†์„ฑ์„ ์„ค์ •ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์†์„ฑ๋งŒ ๊ฐ€์ง€๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด ํƒ€์ž…์„ ๋งŒ๋“ ๋‹ค.
  • Exclude : ์œ ๋‹ˆ์˜จ ํƒ€์ž…์—์„œ ํŠน์ • ํƒ€์ž…์„ ์ œ์™ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Extract : ๋‘ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๊ต์ง‘ํ•ฉ์ธ ํƒ€์ž…์„ ์œ ๋‹ˆ์˜จ ํƒ€์ž…์œผ๋กœ ์ถ”์ถœํ•œ๋‹ค.
  • ReturnType : ํ•จ์ˆ˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…(typeof ํ‚ค์›Œ๋“œ๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•จ)์—์„œ ๋ฐ˜ํ™˜๊ฐ’ ํƒ€์ž…์„ ๊ฐ€์ ธ์˜จ๋‹ค.
  • Awaited : ๋น„๋™๊ธฐ promise์— ๋Œ€ํ•œ resolve๋ฅผ ํ†ตํ•œ ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. await ๋Œ€์‹  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ๋น„๋™๊ธฐ ํ†ต์‹ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋Š” Awaited๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

์ ์–ด ๋†“๊ณ  ๋ณด๋‹ˆ ์—„์ฒญ ๋งŽ๋‹ค. ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”๋ ค๋„ ์ด ์ •๋„๋ผ๋‹ˆ.. ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ˆ™๋‹ฌ์‹œ์ผœ์•ผ๊ฒ ๋‹ค.



๐Ÿ™„ ๋” ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๊ฒƒ

์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ง„ํ–‰ํ•  ๋•Œ ๋ชจ๋“ˆ ์จ๋ณด๊ธฐ

๊ฐ•์‚ฌ๋‹˜์ด ์˜ˆ์‹œ๋กœ ๋ณด์—ฌ์ค€ ๊ฒƒ์€ ์ดํ•ด๊ฐ€ ๋์œผ๋‚˜ ๋ง‰์ƒ ํ”„๋กœ์ ํŠธ์— ๋Œ์ž…ํ•ด์„œ ๋ชจ๋“ˆ์„ import, exportํ•˜๋ ค๊ณ  ํ•˜๋ฉด 99.9% ์—๋Ÿฌ๋ฅผ ๊ฒช์„ ๊ฑฐ ๊ฐ™๋‹ค. ์ดํ›„ ์ง„ํ–‰ํ•  ๊ฐœ์ธ ํฌํด์šฉ ํ”„๋กœ์ ํŠธ์— ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ ์šฉํ•ด๋ณด๊ณ  ๋ชจ๋“ˆํ™”๋„ ์ง„ํ–‰ํ•ด๋ด์•ผ๊ฒ ๋‹ค.



๐Ÿ‘€ ๋А๋‚€์ 

๐Ÿ‘ Keep

๋ฐฉํ•™์ด๋ผ ์กฐ๊ธˆ ํ•ด์ดํ•ด์ง„ ๊ฒƒ๋„ ์žˆ์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ฝ”๋”ฉ์€ ์•„์˜ˆ ์†์„ ๋†“์ง€ ์•Š๊ณ  ์žˆ๋Š” ๊ฑด ์ž˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ํ•œ ๋ฒˆ ๋†“์•„๋ฒ„๋ฆฌ๋ฉด ๊ด€์„ฑ์ด ์ƒ๊ฒจ ํ•œ๋™์•ˆ ๋Š˜์–ด์งˆ ๊ฒƒ์ด ๋ถ„๋ช…ํ•œ ๊ฑธ ๋‚œ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ...

๐Ÿ˜ฑ Problem

๋ฉ˜ํ† ๋‹˜๊ณผ์˜ ๊ฐœ์ธ ๋ฉด๋‹ด์—์„œ ๊ฐœ์ธ ํฌํด ์ค€๋น„์— ๋Œ€ํ•ด ์•„์ง ๋‚ด๊ฐ€ ๊ฑฐ์˜ ์ค€๋น„๋œ ๊ฒƒ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ์ด์ œ๋ถ€ํ„ฐ๋ผ๋„ ์ง„์งœ ๋‚ด ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ๋งŒ๋“ค๊ณ  ์–ด๋””๋“  ์ง€์›ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

๐Ÿ˜œ Try

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ํƒ€์ž…์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ด๋ก  ๊ฐœ๋…์€ ์ค‘์š”ํ•œ ๊ฒƒ์„ ๊ฑฐ์˜ ๋ฐฐ์šด ๊ฒƒ ๊ฐ™๋‹ค. ์ด์ œ ์ด๊ฒƒ์„ ์ž˜ ์จ๋จน์–ด๋ณด์ž.



๐Ÿ˜… ํ•ด๋‹น ๋‚ด์šฉ์€ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด๋‚˜ ์˜คํ•ดํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ํ”ผ๋“œ๋ฐฑ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ค€๋น„์ค‘...

0๊ฐœ์˜ ๋Œ“๊ธ€