πŸ“˜ νƒ€μž…μŠ€ν¬λ¦½νŠΈ κ°œλ… 정리07

seoyoon_leeΒ·2026λ…„ 3μ›” 29일

TypeScript

λͺ©λ‘ 보기
14/21
post-thumbnail

πŸ“˜ 1. ν•¨μˆ˜ νƒ€μž… μ •μ˜

πŸ‘‰ ν•¨μˆ˜λŠ” μ΄λ ‡κ²Œ μƒκ°ν•˜λ©΄ μ‰¬μ›Œμš”:
β€œμ–΄λ–€ 값을 λ°›κ³  β†’ μ–΄λ–€ 값을 λŒλ €μ€€λ‹€β€

  • λ§€κ°œλ³€μˆ˜ νƒ€μž… + λ°˜ν™˜ νƒ€μž… μ •μ˜
function func(a: number, b: number): number {
  return a + b;
}

βœ” 의미

  • a, b β†’ number νƒ€μž… λ°›μŒ
  • κ²°κ³Ό β†’ number λ°˜ν™˜

πŸ“˜ 2. ν™”μ‚΄ν‘œ ν•¨μˆ˜ νƒ€μž…

const add = (a: number, b: number): number => a + b;

βœ” μœ„ ν•¨μˆ˜λž‘ μ™„μ „νžˆ 동일
πŸ‘‰ μš”μ¦˜ JS/TSμ—μ„œ 더 많이 씀 (μ€‘μš”πŸ”₯)

πŸ“˜ 3. λ§€κ°œλ³€μˆ˜ (Parameter)

βœ” κΈ°λ³Έ + 선택적 λ§€κ°œλ³€μˆ˜

function introduce(name = 'army', age: number, tall?: number)

핡심 포인트

  1. tall?: number
    πŸ‘‰ μžˆμ„ μˆ˜λ„ 있고 없을 μˆ˜λ„ 있음 β†’ number | undefined
  2. 선택적 λ§€κ°œλ³€μˆ˜λŠ” 뒀에 와야 함

❌ 잘λͺ»λœ 예

function test(a?: number, b: number) {}

βœ” νƒ€μž… κ°€λ“œ (핡심πŸ”₯)

if (typeof tall === 'number') {

πŸ‘‰ "이 값이 μ§„μ§œ number인지 확인"
βœ” 이유
β†’ undefined일 μˆ˜λ„ μžˆμ–΄μ„œ 였λ₯˜ λ°©μ§€

πŸ“˜ 4. Rest νŒŒλΌλ―Έν„° (λ‚˜λ¨Έμ§€ λ§€κ°œλ³€μˆ˜)

function getSum(...rest: number[])

πŸ‘‰ μ—¬λŸ¬ 개 값을 λ°°μ—΄λ‘œ λ°›μŒ

getSum(1,2,3) β†’ [1,2,3]

βœ” μ€‘μš” 포인트

  • νƒ€μž…μ€ λ°°μ—΄λ‘œ μ§€μ •ν•΄μ•Ό 함

πŸ“˜ 5. ν•¨μˆ˜ νƒ€μž… ν‘œν˜„μ‹ (νƒ€μž… 별칭)

type Operation = (a: number, b: number) => number;

πŸ‘‰ ν•¨μˆ˜ νƒ€μž…μ„ 미리 μ •μ˜

const add: Operation = (a, b) => a + b;

βœ” μž₯점

πŸ‘‰ μ½”λ“œ μž¬μ‚¬μš© κ°€λŠ₯ (μ‹€λ¬΄μ—μ„œ 많이 씀πŸ”₯)

πŸ“˜ 6. 호좜 μ‹œκ·Έλ‹ˆμ²˜ (Call Signature)

type Operation2 = {
  (a: number, b: number): number;
  name: string;
};

πŸ‘‰ ν•¨μˆ˜ + 속성을 같이 κ°€μ§ˆ 수 있음
βœ” 이런걸 ν•˜μ΄λΈŒλ¦¬λ“œ νƒ€μž…μ΄λΌκ³  함

πŸ“˜ 7. ν•¨μˆ˜ νƒ€μž… ν˜Έν™˜μ„± (πŸ”₯ λ‚œμ΄λ„)

βœ” κΈ°μ€€ 1. λ°˜ν™˜κ°’

type A = () => number;
type B = () => 10;

βœ” κ²°κ³Ό

a = b; // κ°€λŠ₯ (μ—…μΊμŠ€νŒ…)
b = a; // λΆˆκ°€λŠ₯ (λ‹€μš΄μΊμŠ€νŒ…)

πŸ‘‰ μ‰½κ²Œ λ§ν•˜λ©΄

  • μž‘μ€ β†’ 큰 : κ°€λŠ₯
  • 큰 β†’ μž‘μ€ : λΆˆκ°€λŠ₯

βœ” κΈ°μ€€ 2. λ§€κ°œλ³€μˆ˜

πŸ’₯ ν—·κ°ˆλ¦¬λŠ” λΆ€λΆ„
πŸ‘‰ λ°˜ν™˜κ°’μ΄λž‘ λ°˜λŒ€λ‘œ 생각해야 함

βœ” 같은 개수일 λ•Œ

type C = (value: number) => void;
type D = (value: 10) => void;

d = c; // κ°€λŠ₯
c = d; // λΆˆκ°€λŠ₯

πŸ‘‰ 이유

  • λ§€κ°œλ³€μˆ˜λŠ” 더 "넓은 νƒ€μž…"이 μ•ˆμ „ν•¨

βœ” 객체 νƒ€μž…μΌ λ•Œ

type Animal = { name: string }
type Cat = { name: string, color: string }

catFunc = animalFunc; // κ°€λŠ₯
animalFunc = catFunc; // λΆˆκ°€λŠ₯

πŸ‘‰ 이유

  • cat은 color ν•„μš”ν•¨ β†’ μœ„ν—˜

βœ” λ§€κ°œλ³€μˆ˜ 개수 λ‹€λ₯Ό λ•Œ

func1 = func2 // κ°€λŠ₯
func2 = func1 // λΆˆκ°€λŠ₯

πŸ‘‰ κ·œμΉ™

  • λ§€κ°œλ³€μˆ˜ 적은 μͺ½ β†’ κ°€λŠ₯
  • λ§Žμ€ μͺ½ β†’ λΆˆκ°€λŠ₯

🚨 κ°€μž₯ 많이 ν•˜λŠ” μ‹€μˆ˜

❌ 1. optional μœ„μΉ˜ μ‹€μˆ˜

function test(a?: number, b: number) ❌

βœ” ν•΄κ²°
β†’ optional은 무쑰건 λ’€λ‘œ

❌ 2. νƒ€μž…κ°€λ“œ μ•ˆμ”€

tall + 10 ❌

βœ” ν•΄κ²°

if(typeof tall === 'number')

❌ 3. rest νƒ€μž… μ•ˆλΆ™μž„
function sum(...rest) ❌

βœ” ν•΄κ²°

(...rest: number[])

profile
Frontend Developer · 기둝 ⭐

0개의 λŒ“κΈ€