TIL - 타입스크립트 함수와 메서드

MinWoo Park·2021년 2월 9일
0

TIL

목록 보기
6/49
post-thumbnail

Today I Learned

매일 배운 것을 정리하며 기록합니다. TypeScript 함수와 메서드에 대해서 공부하고 있습니다.


함수 선언문

  • 매개변수와 함수 반환값(return type)에 타입 주석을 붙임
  • ex)
function 함수명(매개변수1: 타입1, 매개변수2: 타입2[,...]) : 반환값 타입 {
  ...
}
function add(a: number, b: number): number {
  return a + b
}

void 타입

  • 값을 반환하지 않는 함수
  • ex)
function printMyFavorite(name: string) : void {
 console.log(`my favorite: ${name}`) 
}

함수 시그니쳐(function signature)

  • 함수의 타입

  • (매개변수1 타입, 매개변수2 타입[,...]) => 반환값 타입

  • ex) 매개변수가 있는 경우

let printMyFavorite: (string) => void = function (name: string) : void {}
  • ex) 매개변수가 없는 경우
let noParams: () => void = function() : void {}

타입 별칭(type alias)

  • type 키워드를 통해 타입 별칭화 가능
  • ex)
    type 새로운 타입 = 기존 타입
type stringNumberFunc = (string, number) => void
let f: stringNumberFunc = function(a: string, b: number): void {}
let g: stringNumberFunc = function(c: string, d: number): void {}

undefined 관련 주의 사항

  • 타입스크립트에서 undefined는 타입이자 값
  • 최하위 타입이므로 object,class,interface 등을 상속하는 자식타입으로 간주 됨.
  • ex) 잘못된 예시
interface food {
  name : string
}

function getFood(menu: food) {
  return menu.name  // undefined.name이 되어서 name속성을 찾을 수 없는 오류 발생
}

let f = getFood(undefined) // 에러 발생, 
// undefined가 food를 상속하는 자식 타입으로 간주됨.
// 
  • ex) 옳은 예시
interface food {
  name: string
}
function getFood(menu: food) {
  return menu != undefined && menu.name? menu.name : 'undefined'
}

let f = getFood(undefined) 
console.log(f) // undefined
console.log(getFood({name: 'pizza'})) // pizza

함수는 객체

  • 자바스크립트는 함수형 언어 '스킴(schem)'과 프로토타입(prototype) 기반 객체지향 언어 '셀프(self)'를 모델로 만들어짐
  • 타입스크립트 또한 자바스크립트의 특징을 포함
  • 자바스크립트에서 함수는 Function 클래스의 인스턴스(instance)

일등 함수(first-class function)

  • 프로그래밍 언어가 일등 함수 기능을 제공하면 '함수형 프로그래밍 언어(functional programming language)'라고 함
  • 함수와 변수를 구분하지 않음
  • ex)
let f = function(a, b) { return a + b }
f = function(a, b) { return a - b }

콜백 함수 (callback function)

  • 함수형 프로그래밍 언어에서 함수는 '함수 표현식'이라는 일종의 값이기에 변수에 담을 수 있음
  • 매개변수 형태로 동작하는 함수
  • ex)
const f = (callback: () => void): void => callback()
const init = (callback: () => void): void => {
  console.log('default')
  callback()
  console.log('all finished')
}

init(() => console.log('custom'))
  • 결과값
    default
    custom
    all finished

profile
물음표를 느낌표로 바꾸는 순간을 사랑하는 개발자입니다.

0개의 댓글