---
description: https://github.com/OneMoreBottlee/TypeScript-Master/tree/main/S4
---

# \[S4] 함수

#### 매개변수 애너테이션 설정

매개변수 뒤에 타입을 설정한다.

```tsx
const square = (num : number) => {
	return num * num
}
```

타입을 명시하지 않으면 any 로 설정된다.

```tsx
// 변수별 설정 가능
const doSomething = (person: string, age: number, isFunny: boolean) => {};

// 초기값 설정 가능
function greett(person: string = "stranger"){
    return `Hi there, ${person}!`
}
```



#### 반환값에 애너테이션 설정

TS는 함수의 매개변수 타입을 기반으로 리턴 값의 타입을 추론한다.

알아서 추론해주지만 명시적으로 작성해주면 코드를 이해하는데 도움이 된다.

```tsx
function square2(num: number):number {
    return num * num;
}

square(2)

// 리턴값의 타입이 다양할수도 있음
// 문자열일수도, 숫자일수도 있음
function rand(num: number) {
    if(Math.random() < 0.5) {
        return num.toString()
    }
    return num
}

rand(3)
```

#### 익명함수

map이나 filter 같은 익명함수를 사용하는 경우, TS는 알아서 파라미터 타입을 추론해준다.

#### Void

아무것도 반환하지 않는 함수에 설정, undefined 상태로 값을 반환한다.

#### Never

TS 고유 타입으로 함수의 반환 타입으로 쓰이는 경우와 절대 반환하지 않아야 할 함수를 애너테이션 처리할 때 사용함
