카테고리 없음

TypeScript 함수와 메서드

만능 엔터테이너 2024. 7. 28. 14:18
728x90
반응형
SMALL

TypeScript 함수 선언문

function 함수 이름(매개변수1: 타입1, 매개변수2: 타입2, ...) : 반환값 타입 {
  함수 몸통
}

 

타입스크립트 함수 선언문 예

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

 

void 타입

값을 반환하지 않는 함수는 반환 타입이 void입니다. void타입은 함수 반환 타입으로만 사용합니다.

void 타입 예

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

 

함수 시그니처

함수의 타입을 말합니다.

(매개변수1 타입, 매개변수2 타입, ...) => 반환값 타입
함수 시그니처 사용 예

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

 

만약, 매개변수가 없으면 단순히 ()로 표현합니다. 

() => void는 매개변수 및 반환값도 없는 함수 시그니처입니다.

 

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

type 키워드는 기존에 존재하는 타입을 단순히 이름만 바꿔서 사용할 수 있도록 해줍니다.(=타입 별칭)

type 새로운 타입 = 기존 타입

 

선택적 매개변수

함수의 매개변수 뒤에 물음표를 붙여 사용합니다.

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

 

선택적 매개변수가 있는 함수의 시그니처는 다음처럼 타입 뒤에 물음표를 붙입니다.

type OptionalArgFunc = (string, number?) => void

일등 함수

함수와 변수를 구분하지 않는 다는 의미입니다.

let f = function(a,b) { return a + b}
f = function(a,b) {return a - b}

2문장 모두 이상 없습니다.

 

함수 표현식

위 일등함수 예시에서 function(a,b) { return a + b} 부분을 함수 표현식이라고 합니다.

 

함수 호출 연산자

변수가 함수 표현식을 내포하고 있으면, 변수 이름 뒤에 함수 호출 연산자 (  )를 붙여 호출할 수 있습니다.

 

const 키워드와 함수 표현식

함수 표현식을 담는 변수는 let보다는 const 키워드로 선언하는 것이 좋습니다.

let 키워드는 변수값이 변할 수 있으므로 추후 문제가 발생할 수 있습니다.

let f = () => {}

 

반면, const 키워드를 통해 함수 표현식을 담는 변수를 선언하면, 이후 함수 내용이 절대로 바뀌지 않습니다.

const f = () => {}

화살표 함수와 표현식 문

const 함수 이름 = (매개변수1: 타입1, 매개변수2: 타입2, ...) : 반환 타입 => 함수 몸통

 

화살표 함수의 내부는 function과는 다르게 다음처럼 중괄호를 사용할 수 있습니다.

const arrow1 = (a: number, b: number): number => {return a + b}
const arrow2 = (a: number, b: number): number => a + b

 

복합 실행문

if(조건식)
  실행문
  
  또는
  
if(조건식) {
  실행문1
  실행문2
}

 

return 키워드 - 반드시 함수 { } 내부에서만 사용이 가능한 제약이 존재합니다.

function isGreater(a: number, b: number): boolean {
  a > b // 결과를 반환하지 않음
}

function isGreater(a: number, b: number): boolean {
  return a > b // true나 false를 반환
}

 

📍복합 실행문에서 return 키워드 사용

const isGreater = (a: number, b: number): boolean => {return a > b}

 

콜백 함수

변수에 함수 표현식을 담을 수 있어 매개변수 형태로 동작하는 함수를 말합니다.

export const init = (callback: () => void): void => {
  console.log('default initialization finished.')
  callback()
  console.log('all initialization finished.')
}

import {init} from './init'
init(() => console.log('custom initialization finished.'))

실행 결과
default initialization finished.
custom initialization finished.
all initialization finished.

 

중첩 함수 - 함수 표현식 내부에 여러 개의 함수 작성이 가능합니다.

const calc = (value: number, cb: (number) => void): void => {
  let add = (a, b) => a + b
  function multiply(a,b) {return a * b}
  
  let result = multiply(add(1,2), value)
  cb(result)
}
calc(30, (result: number) => console.log(`result is ${result}`)) // result is 90

 

고차 함수 - 다른 함수를 반환하는 함수

const add1 = (a: number, b: number): number => a + b // 보통 함수
const add2 = (a: number): (number) => number => (b: number): number => a + b // 고차 함수
const add = (a: number): (number) => number => (b: number): number => a + b
const result = add(1)(2)
console.log(result) // 3

2차 고차함수 이므로 add(1)(2)로 작성해야 됩니다.

 

매개변수 기본값 지정하기 - 함수 호출 시 인수를 전달하지 않더라도 매개변수에 어떤 값을 설정하는 것

(매개변수: 타입 = 매개변수 기본값)

 

다음 코드에서 3행의 makePerson 함수는 호출 때 매개변수 age에 해당하는 값을 전달받지 못하면 기본으로 10이 설정됩니다.

export type Person = {name: string, age: number}

export const makePerson = (name: string, age: number = 10): Person => {
  const person = {name: name, age: age}
  return person
}
console.log(makePerson('Jack'))
console.log(makePerson('Jack', 33))

 

객체를 반환하는 화살표 함수 만들기 - 중괄호 { } 가 아닌 소괄호 ( )로 작성하여야 합니다.

export const makePerson = (name: string, age: number = 10): Person => ({name, age})

 

색인 키와 값으로 객체 만들기

const makeObject = (key, value) => ({[key]: value})
console.log(makeObject('name', 'Jack')) // { name: 'Jack' }
console.log(makeObject('firstName', 'Jane')) // {firstName: 'Jane }

 

728x90
반응형
LIST