Web/TypeScript

[TS] ν•¨μˆ˜, ν•¨μˆ˜ νƒ€μž… ν‘œν˜„μ‹κ³Ό 호좜 μ‹œκ·Έλ‹ˆμ²˜

ansui 2024. 11. 19. 14:43

ν•¨μˆ˜ νƒ€μž…

πŸ’‘ν•¨μˆ˜λ₯Ό μ„€λͺ…ν•˜λŠ” κ°€μž₯ 쒋은 방법

JS - μ–΄λ–€ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›κ³  μ–΄λ–€ 결과값을 λ°˜ν™˜ν•˜λŠ” μ§€ 이야기
TS - μ–΄λ–€ [νƒ€μž…μ˜] λ§€κ°œλ³€μˆ˜λ₯Ό λ°›κ³ , μ–΄λ–€ [νƒ€μž…μ˜] 결과값을 λ°˜ν™˜ν•˜λŠ” μ§€ 이야기

// ν•¨μˆ˜ νƒ€μž… μ •μ˜
function func(a: number, b: number): number {
  // λ°˜ν™˜κ°’μ˜ νƒ€μž…μ€ 없어도 μΆ”λ‘  κ°€λŠ₯
  return a + b;
}

// ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ νƒ€μž…μ„ μ •μ˜ν•˜λŠ” 방법
const add = (a: number, b: number): number => a + b;

 

1οΈβƒ£ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜

function introduce1(name = "μ•ˆμˆ˜μ΄", tall: number) {
  console.log(`name: ${name}`);
  console.log(`tall: ${tall}`);
}

introduce1("μ•ˆμˆ˜μ΄", 180);

// λ§€κ°œλ³€μˆ˜λ₯Ό λͺ¨λ‘ λ„£μ§€ μ•Šμ•„μ„œ 였λ₯˜ λ°œμƒ
introduce1("μ•ˆμˆ˜μ΄");

// ?λ₯Ό λΆ™μ—¬μ„œ ν•΄κ²°
function introduce2(name = "μ•ˆμˆ˜μ΄", tall?: number) {
  console.log(`name: ${name}`);
  console.log(`tall: ${tall}`);
}

introduce2("μ•ˆμˆ˜μ΄");

 

2️⃣선택적 λ§€κ°œλ³€μˆ˜μ˜ 쑴재

❗선택적 λ§€κ°œλ³€μˆ˜λŠ” ν•„μˆ˜ λ§€κ°œλ³€μˆ˜λ³΄λ‹€ λ’€μ— μžˆμ–΄μ•Ό ν•œλ‹€.

// tall이 undefined 일 μˆ˜λ„ μžˆμ–΄ 였λ₯˜ λ°œμƒ
function introduce3(name = "μ•ˆμˆ˜μ΄", tall?: number) {
  console.log(`name: ${name}`);
  console.log(`tall: ${tall + 10}`);
}

// typeof둜 ν•΄κ²°
function introduce4(name = "μ•ˆμˆ˜μ΄", tall?: number) {
  console.log(`name: ${name}`);
  if (typeof tall === "number") {
    console.log(`tall: ${tall + 10}`);
  }
}

// 선택적 λ§€κ°œλ³€μˆ˜κ°€ ν•„μˆ˜ λ§€κ°œλ³€μˆ˜λ³΄λ‹€ μ•žμ— μžˆμ–΄ 였λ₯˜ λ°œμƒ
function introduce5(name = "μ•ˆμˆ˜μ΄", tall?: number, age: number) {
  console.log(`name: ${name}`);
  console.log(`tall: ${tall}`);
}

// ν•΄κ²°
function introduce6(name = "μ•ˆμˆ˜μ΄", age: number, tall?: number) {
  console.log(`name: ${name}`);
  console.log(`tall: ${tall}`);
}

 

3️⃣ λ§€κ°œλ³€μˆ˜μ˜ 개수 - ...rest λ°°μ—΄, νŠœν”Œ

// λ§€κ°œλ³€μˆ˜μ˜ κ°œμˆ˜μ— 상관없이 λͺ¨λ‘ λ”ν•΄μ„œ λ°˜ν™˜
// ...rest: 가변적인 개수의 λ³€μˆ˜λ₯Ό λ°°μ—΄λ‘œ λ¬Άμ–΄μ„œ rest에 λ„£μ–΄μ€€λ‹€.
function getSum(...rest: number[]) {
  let sum = 0;
  rest.forEach((it) => (sum += it));
  return sum;
}

// λ§€κ°œλ³€μˆ˜μ˜ 개수λ₯Ό μ •ν•˜κ³  μ‹ΆμœΌλ©΄ νŠœν”Œ νƒ€μž… 선택
function getSum2(...rest: [number, number, number]) {
  let sum = 0;
  rest.forEach((it) => (sum += it));
  return sum;
}

getSum2(1, 3, 4); // 3개만 μž…λ ₯ κ°€λŠ₯

 


ν•¨μˆ˜ νƒ€μž… ν‘œν˜„μ‹

λΉ„μŠ·ν•œ ν˜•μ‹μ˜ ν•¨μˆ˜λ₯Ό μ—¬λŸ¬κ°œ λ§Œλ“€ λ•Œ νŽΈλ¦¬ν•˜λ‹€.

// κΈ°μ‘΄ ν•¨μˆ˜
const addNum = (a: number, b: number): number => a + b;

// ν•¨μˆ˜ νƒ€μž…μ„ μ΄μš©ν•œ ν•¨μˆ˜
type Calculation = (a: number, b: number) => number;
const add: Calculation = (a, b) => a + b;
const sub: Calculation = (a, b) => a - b;
const multiply: Calculation = (a, b) => a * b;
const divide: Calculation = (a, b) => a / b;

 

호좜 μ‹œκ·Έλ‹ˆμ²˜

// 호좜 μ‹œκ·Έλ‹ˆμ²˜ (콜 μ‹œκ·Έλ‹ˆμ²˜)
type Calculation2 = {
  (a: number, b: number): number;
};

function func(a: number): void {}

const add2: Calculation2 = (a, b) => a + b;
const sub2: Calculation2 = (a, b) => a - b;
const multiply2: Calculation2 = (a, b) => a * b;
const divide2: Calculation2 = (a, b) => a / b;

μ΄μ •ν™˜λ‹˜μ˜ μΈν”„λŸ° κ°•μ˜ "ν•œ μž… 크기둜 잘라 λ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ(TypeScript)"λ₯Ό μ°Έκ³ ν•˜μ—¬ μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.