PHpullh

TYPESCRIPT · 심층 가이드

TypeScript 함수 완전 정리

기본 함수와 기본값 매개변수, 클로저, 고차 함수, 제네릭, 메모이제이션, 파이프라인까지 TypeScript 함수 20가지 형태를 정리했습니다.

주제 20개 · 예제 코드 포함 · 최종 수정 2026-08-30 · 작성 pullh 편집팀

함수는 TypeScript에서 타입이 가장 크게 힘을 발휘하는 자리입니다. 매개변수와 반환값에 타입을 붙이는 순간, 호출하는 쪽의 실수가 실행 전에 걸러지고 콜백의 인자 타입까지 추론이 흘러갑니다. 반대로 타입을 any로 열어 두면 그 지점부터 추론이 끊겨 아래쪽 전체가 검사 밖으로 빠져나갑니다.

기본 함수 선언람다 함수를 나란히 보며 두 표기의 차이를 확인하는 것으로 시작하십시오. 기본값 매개변수가변 인자 합계가 호출 형태를 넓혀 주고, 클로저 카운터는 상태를 함수 안에 가두는 방식을 보여 줍니다. 뒤쪽의 제네릭 함수고차 함수 map, compose 함수는 한 묶음으로 읽어야 타입이 어떻게 이어져 흐르는지가 보입니다.

화살표 함수와 일반 함수의 차이는 문법이 아니라 this에 있습니다. 일반 함수는 호출 방식에 따라 this가 바뀌지만 화살표 함수는 정의된 자리의 this를 그대로 씁니다. 클래스 메서드를 콜백으로 넘겼을 때 this가 사라지는 고전적인 버그가 여기서 나옵니다. 콜백으로 건네질 함수라면 화살표 형태로 정의하거나 바인딩을 명시하십시오.

01기본 함수 선언

TypeScript에서 기본 함수 선언 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 기본 함수 선언
function add(a: number, b: number): number {
  return a + b;
}
console.log(add(1, 2));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

02두 값을 더하는 함수

TypeScript에서 두 값을 더하는 함수 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 두 값을 더하는 함수
function sum(...values: number[]): number {
  return values.reduce((total, value) => total + value, 0);
}
console.log(sum(1, 2, 2));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

03기본값 매개변수

TypeScript에서 기본값 매개변수 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 기본값 매개변수
function makeCounter() {
  let current: number = 0;
  return () => ++current;
}
const next = makeCounter();
console.log(next(), next());
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

04가변 인자 합계

TypeScript에서 가변 인자 합계 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 가변 인자 합계
function first<T>(values: T[]): T | undefined {
  return values[0];
}
console.log(first(["a", "b"]));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

05객체 또는 구조체 반환

TypeScript에서 객체 또는 구조체 반환 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 객체 또는 구조체 반환
function add(a: number, b: number): number {
  return a + b;
}
console.log(add(5, 2));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

06람다 함수

TypeScript에서 람다 함수 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 람다 함수
function sum(...values: number[]): number {
  return values.reduce((total, value) => total + value, 0);
}
console.log(sum(1, 2, 6));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

07클로저 카운터

TypeScript에서 클로저 카운터 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 클로저 카운터
function makeCounter() {
  let current: number = 0;
  return () => ++current;
}
const next = makeCounter();
console.log(next(), next());
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

08재귀 팩토리얼

TypeScript에서 재귀 팩토리얼 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 재귀 팩토리얼
function first<T>(values: T[]): T | undefined {
  return values[0];
}
console.log(first(["a", "b"]));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

09고차 함수 map

TypeScript에서 고차 함수 map 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 고차 함수 map
function add(a: number, b: number): number {
  return a + b;
}
console.log(add(9, 2));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

10조건 함수 predicate

TypeScript에서 조건 함수 predicate 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 조건 함수 predicate
function sum(...values: number[]): number {
  return values.reduce((total, value) => total + value, 0);
}
console.log(sum(1, 2, 10));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

11정렬용 비교 함수

TypeScript에서 정렬용 비교 함수 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 정렬용 비교 함수
function makeCounter() {
  let current: number = 0;
  return () => ++current;
}
const next = makeCounter();
console.log(next(), next());
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

12문자열 파서

TypeScript에서 문자열 파서 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 문자열 파서
function first<T>(values: T[]): T | undefined {
  return values[0];
}
console.log(first(["a", "b"]));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

13함수 팩토리

TypeScript에서 함수 팩토리 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 함수 팩토리
function add(a: number, b: number): number {
  return a + b;
}
console.log(add(13, 2));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

14메모이제이션

TypeScript에서 메모이제이션 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 메모이제이션
function sum(...values: number[]): number {
  return values.reduce((total, value) => total + value, 0);
}
console.log(sum(1, 2, 14));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

15커링

TypeScript에서 커링 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 커링
function makeCounter() {
  let current: number = 0;
  return () => ++current;
}
const next = makeCounter();
console.log(next(), next());
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

16compose 함수

TypeScript에서 compose 함수 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// compose 함수
function first<T>(values: T[]): T | undefined {
  return values[0];
}
console.log(first(["a", "b"]));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

17제네릭 함수

TypeScript에서 제네릭 함수 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 제네릭 함수
function add(a: number, b: number): number {
  return a + b;
}
console.log(add(17, 2));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

18콜백으로 완료 알림

TypeScript에서 콜백으로 완료 알림 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 콜백으로 완료 알림
function sum(...values: number[]): number {
  return values.reduce((total, value) => total + value, 0);
}
console.log(sum(1, 2, 18));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

19reducer 함수

TypeScript에서 reducer 함수 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// reducer 함수
function makeCounter() {
  let current: number = 0;
  return () => ++current;
}
const next = makeCounter();
console.log(next(), next());
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

20파이프라인 함수

TypeScript에서 파이프라인 함수 개념을 코드로 빠르게 확인하는 함수 예제입니다.

TypeScript code

// 파이프라인 함수
function first<T>(values: T[]): T | undefined {
  return values[0];
}
console.log(first(["a", "b"]));
알아두면 좋은 점

매개변수와 반환값을 함께 읽으면 함수의 책임이 더 선명하게 보입니다.

자주 하는 실수

함수 선언과 호출을 따로 읽으면 매개변수 순서나 반환값을 놓치기 쉽습니다.

정리하며

  • 타입을 붙이면 추론이 콜백 인자까지 흐르지만 any는 그 흐름을 끊습니다
  • 화살표 함수는 정의된 자리의 this를 쓰고 일반 함수는 호출 방식을 따릅니다
  • 메서드를 콜백으로 넘길 때는 화살표 형태나 명시적 바인딩이 필요합니다
  • 제네릭 함수는 입력 타입과 반환 타입의 관계를 그대로 표현합니다

더 깊이 들어가고 싶다면 TypeScript 학습 라이브러리에서 다른 주제 가이드를 이어서 보거나, 언어 비교에서 같은 개념이 다른 언어에서 어떻게 표현되는지 확인해 보세요.