타입스크립트 함수

기본


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

function add(num1: number, num2: number): void {
  console.log(num1 + num2);
}

function isAdult(age: number): boolean {
  return age > 19;
}


?


function hello(name?: string) {
  return `Hello ${name || "world"}`;
}

function hello2(name = "world") {
  return `Hello ${name}`;
}


function hello(name: string, age?: number): string {
  if (age !== undefined) {
    retrun`Hello ${name}. You are ${age}`;
  } else {
    return `Hello, ${name}`;
  }
}

선택적 매개변수는 필수 매개변수의 자리는 바뀔 수 없다.

반드시 선택적 매개변수가 앞으로 와야하는 경우에는

function hello(age: number || undefined, name: string): string {
  if (age !== undefined) {
    retrun`Hello ${name}. You are ${age}`;
  } else {
    return `Hello, ${name}`;
  }
}

console.log(undefined, 'steve')

위의 경우처럼 사용가능.



Rest parameters


function add(...nums: number[]) {
  return nums.reduce((result, num) => result + num, 0);
}

add(1, 2, 3);


this


interface User {
  name: string;
}

const Sam: User = { name: "Sam" };

function showName(this: User, age: number) {
  console.log(this.name, age);
}

const a = showName.bind(Sam);
a(30); // Sam, 30


function overloading


interface User {
  name: string;
  age: number;
}

function join(name: string, age: string): string;
function join(name: string, age: number): User;
function join(name: string, age: number | string): User | string {
  if (typeof age === "number") {
    return { name, age };
  } else {
    return "나이는 숫자로 입력해주세요.";
  }
}

const sam: User = join("Sam", 30);
const Jane: string = join("Jane", "30");
// err - User 인지 string 인지 확신을 할 수 없는 상태

2개 이상의 타입을 return해야하는 경우에 사용. function 키워드로만 함수 오버로딩을 할 수 있다.

댓글남기기