[typescript] 타입스크립트와 함수형 프로그래밍

타입스크립트( TypeScript)는 자바스크립트의 확장된 기능을 제공하는 프로그래밍 언어입니다. 이 언어는 강력한 정적 타입 검사와 모듈 시스템, 클래스, 인터페이스 등의 기능을 제공하여 대규모 애플리케이션의 개발을 용이하게 합니다.

함수형 프로그래밍은 부수 효과(side effect)를 최소화하고 불변성(immutable)을 유지하는 것에 중점을 둔 프로그래밍 스타일입니다. TypeScript와 함수형 프로그래밍은 함께 사용될 때 매우 강력한 조합을 이룹니다. 이번 글에서는 TypeScript에서 함수형 프로그래밍을 적용하는 방법에 대해 알아보겠습니다.

명시적인 타입 정의

TypeScript는 명확한 타입 정의를 통해 코드의 가독성을 향상시킵니다. 이를 통해 함수형 프로그래밍에서 매우 중요한 요소인 타입 안정성을 보장할 수 있게 됩니다.

function add(x: number, y: number): number {
  return x + y;
}

위의 예제에서 add 함수는 매개변수와 반환값의 타입을 명시하고 있습니다. 이러한 명시적인 타입 정의를 통해 코드를 이해하기 쉽고, 오류를 사전에 방지할 수 있습니다.

고차 함수 활용

고차 함수(higher-order function)는 함수를 매개변수로 받거나, 함수를 반환하는 함수를 말합니다. TypeScript에서는 이러한 함수 조합을 통해 코드를 좀 더 단순하고 모듈화된 구조로 작성할 수 있습니다.

function multiplyBy(factor: number): (input: number) => number {
  return (input: number) => input * factor;
}

const double = multiplyBy(2);
console.log(double(4)); // 출력: 8

위의 예제에서 multiplyBy숫자를 인수로 받아 곱셈을 수행하는 함수를 반환합니다. double이라는 새로운 함수를 생성하여 재사용할 수 있게 됩니다.

불변성 유지하기

불변성은 함수형 프로그래밍의 핵심 개념 중 하나로, 객체나 배열의 상태를 변경하는 대신 새로운 객체나 배열을 생성하는 방식입니다. TypeScript는 불변성을 유지하기 위한 도구들을 제공하여 함수형 프로그래밍 스타일을 채택하는 데 매우 적합합니다.

const numbers: ReadonlyArray<number> = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map((x) => x * 2);
console.log(doubledNumbers); // 출력: [2, 4, 6, 8, 10]

위의 예제에서 ReadonlyArray를 사용하여 numbers 배열이 불변하다는 것을 명시적으로 표현했습니다. 그리고 map을 통해 변형된 새로운 배열을 생성하였습니다.

요약

TypeScript는 강력한 타입 시스템과 함수형 프로그래밍을 적용하기에 매우 적합한 언어입니다. 명시적인 타입 정의, 고차 함수 활용, 불변성 유지 등의 기능을 통해 함수형 프로그래밍 스타일을 채택하여 코드의 안정성과 가독성을 향상시킬 수 있습니다.

함수형 프로그래밍에 대한 더 자세한 내용은 함수형 프로그래밍을 참고하세요.

Happy coding! 🚀