[TypeScript] Function ์ •์˜


1. Function

Javascript ๊ธฐ๋ณธ ํ•จ์ˆ˜

function jsAdd(num1,num2){
   return num1+num2
}

* ํ™”์‚ดํ‘œํ•จ์ˆ˜ *

const jsAdd = (num1,num2) => {
    return num1+num2
}

Typescript ๊ธฐ๋ณธ ํ•จ์ˆ˜

  • ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ง€์ •ํ•ด์คŒ , ํ•จ์ˆ˜์˜ ํƒ€์ž…์„ ์ง€์ •ํ•ด์คŒ
function add(num1:number,num2:number):number{
  return num1+num2
}

* ํ™”์‚ดํ‘œํ•จ์ˆ˜ *

const add = (num1:number,num2:number):number => {
    return num1+num2
}

Optional parameter : ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์žˆ๋Š” ํ•จ์ˆ˜์— ์•„๋ฌด๋Ÿฐ ๊ฐ’๋„ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ (์ถœ๋ ฅ์€ undefined)

  • ?๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ „๋‹ฌํ•ด๋„ ๋˜๊ณ  ์ „๋‹ฌ ํ•˜์ง€ ์•Š์•„๋„๋Œ
  • ?๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด lastname์— parameter๊ฐ€ ์—†์œผ๋ฉด Error ์ถœ๋ ฅ

  function printName(firstname:string , lastname:string){
      console.log(firstname);
      console.log(lastname);
  }

	* Error *

  printName("steve","Jobs") // ๊ฐ’ : "steve","Jobs"
  printName("Kdn"); // 2๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„ฃ์ง€ ์•Š์Œ An argument for 'lastname' was not provided.
  printName("dnod") // 2๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„ฃ์ง€ ์•Š์Œ  An argument for 'lastname' was not provided.

	* Correct *

 function printName(firstname:string , lastname?:string){
      console.log(firstname);
      console.log(lastname); // undefined
	}

	printName("steve","Jobs") // ๊ฐ’ : "steve","Jobs"
	printName("Kdn"); // ๊ฐ’ : "kdn","undefined"
	printName("dnod"); // ๊ฐ’ : "dnod","undefined"

Default parameter : ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๊ธฐ๋ณธ ์ž…๋ ฅํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ

function printMessage(message: string = "default message") {
  console.log(message);
}

printMessage(); // ๊ฐ’ : default message

Rest parameter(Spread ์—ฐ์‚ฐ์ž(โ€ฆ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ž‘์„ฑํ•œ ํ˜•ํƒœ) : ๋ชจ๋“  ์ „๋‹ฌ ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ›์•„์˜ด number[] = ์ˆซ์ž ํƒ€์ž…์˜ ๋ฐฐ์—ด

function addNumbers(...numbers: number[]): number {
  return numbers.reduce((a, b) => a + b); //๋ˆ„์‚ฐ reduce ํ•จ์ˆ˜
}

console.log(addNumbers(1, 2));
console.log(addNumbers(1, 2, 3, 4));
console.log(addNumbers(1, 2, 3, 4, 5, 0));