# 함수

타입스크립트에서 함수를 나타내는 방법은 여러가지 이며 기존 자바스크립트와 달라진점은 2가지 입니다.

  • 인자값에 타입을 정의
  • 리턴값에 타입을 정의

타입을 정의하는 것이기 때문에 number, string, void, number[] 이외의 type, interface로 정의된 타입들도 선언이 가능합니다.

# 함수 선언

// 추론된 리턴
function sum(a: number, b: number) {
  return a + b;
}

// 정의된 리턴
function sum(a: number, b: number): number {
  return a + b;
}

interface 타입을 인자값으로 정의

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

function getUsername(user: User): string {
  return user.name;
}

interface 타입을 리턴값으로 정의

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

function getUser(user: User): User {
  return user;
}

# 리턴 값이 없는 경우

리턴 값이 없을 경우에는 void를 선언해주면 됩니다.

function logMessage(text: string): void {
  console.log(text);
}

# 매개변수 옵셔널

인자값을 선택적으로 받고 싶을 때 ?를 변수 우측에 적어줍니다.

function logMessage(text?: string): void {
  console.log(`logMessage: ${text}`);
}