ํ•จ์ˆ˜์—์„œ ํƒ€์ž… ์ด์šฉํ•˜๊ธฐ: ๊ธฐ๋ณธ

โœ”๏ธ ์˜ˆ์ œ1

// JavaScript ๐Ÿ’ฉ
function jsAdd(num1, num2) {
  return num1 + num2;
}

// TypeScript โœจ
function add(num1: number, num2: number): number {
  return num1 + num2;
}


โœ”๏ธ ์˜ˆ์ œ2

// JavaScript ๐Ÿ’ฉ
function jsFetchNum(id) {
  // code ...
  // code ...
  // code ...
  return new Promise((resolve, reject) => {
    resolve(100);
  });
}

// TypeScript โœจ
function fetchNum(id: string): Promise<number> {
  // code ...
  // code ...
  // code ...
  return new Promise((resolve, reject) => {
    resolve(100);
  });
}



ํ•จ์ˆ˜ parameter ํƒ€์ž…: spread, default, optional

โœ”๏ธ optional parameter

// Optional parameter
function printName(firstName: string, lastName?: string) {
  console.log(firstName);
  console.log(lastName); // undefined
}
printName("Steve", "Jobs");
printName("april");
printName("ving9");


โœ”๏ธ Default parameter

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


โœ”๏ธ Rest parameter

// Rest parameter
//                 ์ธ์ž๋ฅผ ์ˆซ์ž ํƒ€์ž…์˜ ๋ฐฐ์—ด๋กœ ๋ฐ›์•„์˜จ๋‹ค number[]
function addNumbers(...numbers: number[]): number {
  return numbers.reduce((a, b) => a + b);
}
console.log(addNumbers(1, 2));
console.log(addNumbers(1, 2, 3, 4));
console.log(addNumbers(1, 2, 3, 4, 5, 0));




interface ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

interface๋Š” ํด๋ž˜์Šค ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ํƒ€์ž…์„ ์ง€์ • ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ๋ฒ•

โœ”๏ธ ์ผ๋ฐ˜ ๊ฐ์ฒด๋ฅผ interface ๋กœ ํƒ€์ž… ์„ค์ •ํ•˜๊ธฐ

๋ฒจ๋กœํผํŠธ ์ฐธ๊ณ  ์ž๋ฃŒ