[ TS ] 함수와 메서드(1)

유기훈·2022년 6월 24일
0
post-thumbnail

함수 선언문

타입스크립트 함수 선언문은 자바스크립트 함수 선언문에서 매개변수와 함수 반환값에 타입 주석을 붙이는 다음 형태로 구성됩니다. 반환 타입을 생략 할 수 있지만 타입이 생략되어 있으면 함수의 구현 의도를 알기 어렵고 잘못 사용하기 쉬울 뿐더러 타입스크립트를 사용하는 의도에 맞지 않습니다.

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

값을 반환하지 않는 함수는 반환 타입이 void입니다.

function printMe(name: string, age: number): void {
  console.log(`name: ${name}, age: ${age}`)
}

함수 시그니처

변수에 타입이 있듯이 함수 또한 타입이 있는데, 함수의 타입을 함수 시그니처라고 합니다.

let printMe: (string, number) => void = 
    function (name: string, age: number): void{}

type 키워드로 타입 별칭 만들기

타입스크립트는 type이라는 키워드를 통해 기존에 존재하는 타입을 단순히 이름만 바꿔서 사용할 수 있게 해줍니다. 이러한 기능을 타입 별칭이라고 합니다.

type stringNumberFunc = (string, number) => void
let f: stringNumberFunc = function(a: string, b: number): void {}
let g: stringNumberFunc = function(c: string, d: number): void {}

선택적 매개변수

함수의 매개변수에도 다음처럼 이름 뒤에 물음표를 붙일 수 있으며, 이를 선택적 매개변수라고 합니다.

function fn(arg1: string, arg?: number): void{}

일등 함수

프로그래밍 언어가 일등 함수 기능을 제공하면 '함수형 프로그래밍 언어'라고 합니다. 자바스크립트와 타입스크립트는 일등 함수 기능이 있으므로 함수형 프로그래밍 언어입니다. 일등 함수란, 함수와 변수를 구분하지 않는다는 의미입니다.

const 키워드와 함수 표현식

함수 표현식을 담는 변수는 let보다는 const 키워드로 선언하는 것이 바람직하다. let 키워드는 변숫값이 변할 수 있으므로 다음처럼 코드를 작성하면 함수 f는 언젠가 다른 내용으로 바뀔 수 있습니다.

고차 함수와 클로저, 그리고 부분 함수

고차 함수는 또 다른 함수를 반환하는 함수를 말합니다.

const add = (a: number): (number) => number => (b: number): number => a+b

아래 코드에서 a는 add함수의 매개변수이고 b는 _add함수의 매개변수라는 것을 알 수 있습니다. 즉, _add함수의 관점에서만 보면 a는 외부에 선언된 변수입니다. 함수형 프로그래밍 언어에서는 04행과 같은 형태를 클로저라고 합니다.

export type NumberToNumberFunc = (number) => number
export const add = (a: number): NumberToNumberFunc => {
  const _add: NumberToNumberFunc = (b: number): number => {
    return a + b
  }
  return _add
}
profile
개발할 수 있어 감사하다

0개의 댓글