Frontend 개발자 - hyo.loui

νƒ€μž…μŠ€ν¬λ¦½νŠΈ - Function (ν•¨μˆ˜) νƒ€μž… λ³Έλ¬Έ

Typescript

νƒ€μž…μŠ€ν¬λ¦½νŠΈ - Function (ν•¨μˆ˜) νƒ€μž…

hyo.loui 2023. 1. 17. 20:17

🎯λͺ©μ  :

Type Script  ν•¨μˆ˜ νƒ€μž… 정리 및 볡슡


1. JS와 비ꡐ

JS

// js

function add(n1, n2) {
	return n1 + n2;
}

 

TS

function add(num1: number, num2: number): number {
  return num1 + num2;
}

console.log("πŸ‘‰πŸ‘‰  add", typeof add(3, 4)); //πŸ‘‰πŸ‘‰  add number

 

πŸ§ͺλ‚˜μ˜ μ‹€ν—˜μ‹€

// μ‹€ν—˜

const one1 = add(1, 2);
const two = add(1, "2"); // Error
const three = add(1, 2, 3); // Error
const four = add(1); // Error

// νŒŒλΌλ―Έν„°μ—μ„œ returnλ˜λŠ” νƒ€μž…μ΄ λ°”λ€ŒλŠ”κ±΄ λΆˆκ°€λŠ₯
function add_error(num1: number, num2: number): string {
  return num1 + num2;
}

// νƒ€μž… μ„ μ–Έλ˜μ§€ μ•Šμ€ ν•¨μˆ˜μ—μ„œλŠ” js와 λ™μΌν•˜κ²Œ string으둜 λ°˜ν™˜μ‹œν‚¨λ‹€
const addArrow = (num1: number, num2: string) => {
  return num1 + num2;
};
console.log("πŸ‘‰πŸ‘‰  addArrow", addArrow(3, "4")); //πŸ‘‰πŸ‘‰  addArrow 34

2. λ°˜ν™˜κ°’μ΄ μ—†λŠ” νƒ€μž… : void

μš°λ¦¬κ°€ ν‰μ†Œ ν•¨μˆ˜μ— return 없이 μ–΄λ– ν•œ μ‹€ν–‰λ§Œμ„ ν•œ κ²½μš°κ°€ μžˆμ„ 것이닀.

κ·Έ λ•Œ return이 없어도 λ˜λ―€λ‘œ voidλ₯Ό λͺ…μ‹œν•΄ μ‰½κ²Œ μ•Œμˆ˜ μžˆλ‹€.

// λ°˜ν™˜κ°’μ΄ μ—†λŠ” νƒ€μž… : void
function printResult(num: number): void {
  console.log("Result" + num);
}
printResult(5); // Result5

 


3. Optional Parameter

νŒŒλΌλ―Έν„°μ˜ λ³€μˆ˜λͺ… 뒀에 '?'λ₯Ό μΆ”κ°€ν•΄ μ£Όλ©΄ ( type: μ§€μ •νƒ€μž… | undefined )κ°€ λ“€μ–΄κ°„λ‹€.

// Optoinal Parameter

function add2(num1: number, num2?: number): number {
  if (!num2) {
    return num1;
  }
  return num1 + num2;
}

const one = add2(1, 2);
console.log("πŸ‘‰πŸ‘‰  one", one); // πŸ‘‰πŸ‘‰  one 3

const two = add2(10, 20, 30); // Error
console.log("πŸ‘‰πŸ‘‰  two", two); // Error

const three = add2(10);
console.log("πŸ‘‰πŸ‘‰  three", three); // πŸ‘‰πŸ‘‰  three 10

 


4. Default Parameter ( νŒŒλΌλ―Έν„° κΈ°λ³Έκ°’ )

JS의 νŠΉμ„±μ΄λΌκ³  ν•  수 μžˆλ‹€.

TSμ—λ§Œ μžˆλŠ” κΈ°λŠ₯은 μ•„λ‹ˆλ‹€

 

: type = default value

// Default Parameter

function add3(num1: number, num2: number = 0) {
  return num1 + num2;
}
const a3 = add3(10 + 2);
console.log("πŸ‘‰πŸ‘‰  a3", a3); // πŸ‘‰πŸ‘‰  a3 12

const b3 = add3(10);
console.log("πŸ‘‰πŸ‘‰  b3", b3); // πŸ‘‰πŸ‘‰  b3 10

μœ„μ²˜λŸΌ μΈμžκ°€ 1개만 전달이 λ˜μ–΄λ„ 기본값이 있기 λ•Œλ¬Έμ— μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.


5. Rest Parameter ( ...params )

JS의 νŠΉμ„±μ΄λΌκ³  ν•  수 μžˆλ‹€.

TSμ—λ§Œ μžˆλŠ” κΈ°λŠ₯은 μ•„λ‹ˆλ‹€

 

νŒŒλΌλ―Έν„°κ°€ 수 없이 λ§Žλ‹€λ©΄ μƒλ‹Ήνžˆ 번거둭고 κ³€λž€ν•  것이닀.

ν•˜μ§€λ§Œ es6μ—μ„œ μ§€μ›ν•˜λŠ” rest parameter둜 

μ‰½κ²Œ νŒŒλΌλ―Έν„°λ₯Ό μ „λΆ€ λ‚˜μ—΄ν•΄ μ£ΌλŠ” κΈ°λŠ₯을 이용 ν•  수 μžˆλ‹€.

 

// Rest Parameter

function add4(num1: number, ...nums: number[]) {
  let totalOfNums = 0;
  for (let key in nums) {
    totalOfNums += nums[key];
  }
  return num1 + totalOfNums;
}

const a4 = add4(10, 20, 30, 40);
console.log("πŸ‘‰πŸ‘‰  a4", a4); // πŸ‘‰πŸ‘‰  a4 100

 


 

 μ΅œμ’… 정리 

  1. ν•¨μˆ˜, νŒŒλΌλ―Έν„° 각 type을 지정해 쀄 수 μžˆλ‹€.
  2. ν•¨μˆ˜μ˜ νƒ€μž…μ€ μƒλž΅μ΄ κ°€λŠ₯ν•˜κ³ , 좔둠이 비ꡐ적 쉽기 λ•Œλ¬Έμ— 주둜 μƒλž΅ν•œλ‹€.
  3. return 값이 없을 경우 : void
  4. νŒŒλΌλ―Έν„°κ°€ λ“€μ–΄μ˜€μ§€ μ•ŠλŠ” 경우 νŒŒλΌλ―Έν„° λ³€μˆ˜λͺ… μ•žμ— ?둜 μ˜΅μ…”λ„μ²΄μ΄λ‹ κ°€λŠ₯!
  5. νŒŒλΌλ―Έν„°μ— κΈ°λ³Έκ°’ μ„€μ • κ°€λŠ₯ ( param: number = 3 )
  6. νŒŒλΌλ―Έν„° λ§ˆμ§€λ§‰μ— (...문법) Rest Parameters μ‚¬μš©ν•΄μ„œ νŒŒλΌλ―Έν„° μƒλž΅ κ°€λŠ₯