πŸ“’[TypeScript λ§ˆμŠ€ν„° with Webpack & React] Step02.ν•¨μˆ˜

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

1. ν•¨μˆ˜ νŒŒλΌλ―Έν„° μ–΄λ…Έν…Œμ΄μ…˜

TypeScript의 ν•¨μˆ˜λŠ” JavaScript처럼 ν•¨μˆ˜λ₯Ό 생성할 수 μžˆμ§€λ§Œ, λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…κ³Ό λ°˜ν™˜ νƒ€μž…μ„ μ„€μ •ν•΄μ•Ό ν•œλ‹€.


function λ³€μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜ : λ§€κ°œλ³€μˆ˜ νƒ€μž…) : λ°˜ν™˜κ°’μ˜ νƒ€μž… { }

function square(num: number): number{  

    return num*num;
}
ν•¨μˆ˜μ˜ λ°˜ν™˜ νƒ€μž…μ€ νƒ€μž… 좔둠에 μ˜ν•΄ μƒλž΅ κ°€λŠ₯ν•˜μ§€λ§Œ, λͺ…μ‹œν•˜λŠ” 것을 κΆŒμœ λœλ‹€.

λ°˜ν™˜ νƒ€μž…μ„ λͺ…μ‹œν•˜λŠ” κ±Έ κΆŒμœ ν•˜λŠ” 이유

λ§Œμ•½ 밑에 ν•¨μˆ˜κ°€ return 을 해야될 경우

function square(num: number): number{
   num*num // error  
}

returnν•  νƒ€μž…μ΄ λͺ…μ‹œ λ˜μ—ˆμ§€λ§Œ return을 ν•˜μ§€ μ•Šμ•„ 였λ₯˜λ₯Ό μž‘μ•„μ€€λ‹€.
λ³΅μž‘ν•œ ν•¨μˆ˜μ—¬μ„œ λ°˜ν™˜λ¬Έμ΄ μ°ΎκΈ° νž˜λ“€κ²½μš°

ν•¨μˆ˜κ°€ νŒŒλΌλ―Έν„°λ‘œμ„œ μ˜ˆμΈ‘ν•˜λŠ” 것과 λ°˜ν™˜λ˜λŠ”κ±Έ λͺ…μ‹œν•΄λ‘λ©΄ μ‰½κ²Œ μ•Œ 수있고 였λ₯˜λ₯Ό μ˜ˆλ°©ν•  수 μžˆλ‹€.

2. ν•¨μˆ˜ νŒŒλΌλ―Έν„° μ–΄λ…Έν…Œμ΄μ…˜ 더 μ•Œμ•„λ³΄κΈ°

const doSomething = (name: string, age: number, isFunny: boolean) =>{  };

doSomething("kyj", 28 , true); 
μ›ν•˜λŠ” 만큼 νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•  수 μžˆλ‹€.

3. κΈ°λ³Έ νŒŒλΌλ―Έν„°λ₯Ό μ΄μš©ν•΄ μž‘μ—…ν•˜κΈ°


function greet(person: string = "stranger"){ 
    return `Hi there, ${person}`
}
default값은 전체 μ–΄λ…Έν…Œμ΄μ…˜ 뒀에 μ™€μ•Όν•œλ‹€.

4. 읡λͺ… ν•¨μˆ˜ λ¬Έλ§₯상 νƒ€μž… 지정

const colors = ["red", "orange", "yellow"];

colors.map(color => { // type을 μ§€μ •ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ λ¬Έλ§₯상 colors 값듀이 stringμ΄λž€ κ±Έ μΈμ§€ν•˜μ—¬ color의 type을 string이라 μ§€μ •ν•œλ‹€.
  return color.toUpperCase(); 
})

5. Void νƒ€μž…

function print(msg: string): void {
  console.log(msg);
}

ν•¨μˆ˜μ— 아무것도 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ”κ±Έ λͺ…μ‹œν•˜κΈ°μœ„ν•΄ μ‚¬μš©λœλ‹€.

6. Never νƒ€μž…

ν•¨μˆ˜μ˜ λ°˜ν™˜ νƒ€μž…μœΌλ‘œ μ“°μ΄κ±°λ‚˜ μ ˆλŒ€ λ°˜ν™˜λ˜μ§€ μ•Šμ•„μ•Ό ν•  ν•¨μˆ˜λ₯Ό μ–΄λ…Έν…Œμ΄μ…˜ μ²˜λ¦¬ν•  λ•Œ 쓰인닀.

function test(input:string): never{
  console.log(input);
  
  return input ; // error  return 값이 있기 λ•Œλ¬Έμ— error
}

void 와 never의 차이점

voidλŠ” μ—„λ°€νžˆ 값이닀. voidλ₯Ό λ°˜ν™˜ν•œ ν•¨μˆ˜κ³  undefined μƒνƒœλ‘œ λ°˜ν™˜λœλ‹€.

neverλŠ” μ ˆλŒ€ λ°˜ν™˜ν•  값이 있으면 μ•ˆλ˜λŠ” λ―Έλ¬˜ν•œ 차이가 μžˆλ‹€.

profile
Brendan Eich, Jordan Walke, Evan You, κΆŒμš©μ€€

0개의 λŒ“κΈ€