[TypeScript] 함수 파라미터 타입

juiuj·2024년 10월 9일
0

TS-study

목록 보기
9/11

함수 타입 지정 ~~~₩~수정하기

타입스크립트에서 함수 파라미터에 타입을 지정하는 것은 함수의 인자에 대해 명확한 타입을 정의하고 타입 안정성을 보장함.
또한 파라미터에 타입 지정을 통해 함수가 호출될 때 잘못된 타입의 인자가 전달되는 것을 컴파일 단계에서 방지할 수 있음.

1️⃣ 기본적인 함수 파라미터 타입 지정

: 각 함수의 파라미터에 명시적으로 타입을 지정하여 함수 호출 시 타입 오류를 방지함.

function greet(name: string): void {
  console.log("Hello, " + name);
}

greet("Alice");  // 정상 작동
greet(42);       // 오류 발생: Argument of type 'number' is not assignable to parameter of type 'string'.

이 코드에서 greet 함수는 name이라는 문자열(string) 타입의 파라미터를 받음.
만약 string이 아닌 number나 다른 타입의 값을 전달하면 타입스크립트는 컴파일 시점에서 오류를 발생시킴.


2️⃣ 여러 파라미터에 타입 지정

: 여러 개의 파라미터가 있는 함수에서도 각각의 파라미터에 타입을 지정할 수 있음. 각 파라미터는 함수 정의에서 각자의 타입을 가져야 함.

function add(a: number, b: number): number {
  return a + b;
}

add(5, 3);     // 정상 작동
add(5, "3");   // 오류 발생: Argument of type 'string' is not assignable to parameter of type 'number'.

이 함수는 두 개의 숫자 number 파라미터를 받고 그 합을 반환함.
만약 파라미터 중 하나라도 숫자가 아니면 컴파일 에러가 발생함.


3️⃣ 선택적 파라미터

: 타입스크립트에서는 특정 파라미터가 필수가 아니도록 할 수 있음. 이를 선택적 파라미터(optional parameter)라고 하며, 파라미터 뒤에 물음표(?)를 붙여서 선언할 수 있음. 선택적 파라미터는 전달되지 않을 경우 undefined 값을 가짐.

function greet(name: string, age?: number): void {
  if (age) {
    console.log(`Hello, ${name}. You are ${age} years old.`);
  } else {
    console.log(`Hello, ${name}.`);
  }
}

greet("Alice");        // "Hello, Alice."
greet("Bob", 25);      // "Hello, Bob. You are 25 years old."

4️⃣ 기본값이 있는 파라미터(Default Parameter)

: 파라미터에 기본값을 설정할 수 있음. 설정한 기본값이 있는 파라미터는 함수가 호출될 때 해당 인자를 전달하지 않으면 기본값 이 사용됨.

function greet(name: string, greeting: string = "Hello"): void {
  console.log(greeting + ", " + name);
}

greet("Alice");         // "Hello, Alice"
greet("Bob", "Hi");     // "Hi, Bob"

greeting 파라미터는 기본값으로 "hello"를 가지며, 값이 전달되지 않으면 기본값이 사용됨.


5️⃣ Rest 파라미터(Rest Parameter)

: Rest 파라미터를 사용하면 함수가 가변 인자를 받을 수 있음. Rest 파라미터는 배열로 수집되며, 타입 또한 배열 타입으로 지정할 수 있음.

function sum(...numbers: number[]): number {
  return numbers.reduce((acc, num) => acc + num, 0);
}

console.log(sum(1, 2, 3));      // 6
console.log(sum(10, 20, 30));   // 60

위 코드에서 sum 함수는 가변 인자(...number)를 받아서 배열로 처리하며, 각 요소는 number 타입임. 여러 개의 숫자를 전달하면 그 합을 구하는 함수임.

<>function sum(num1, num2, ...numbers)


6️⃣ 유니온 타입

: 하나 이상의 타입을 허용함

7️⃣ 인터페이스를 통한 타입 지정

: 복잡한 객체 형태의 파라미터에 인터페이스 사용할 수 있음.

0개의 댓글