04-1. 함수와 메서드

euNung·2022년 6월 6일
0

타입스크립트

목록 보기
1/10
  • JavaScript Function == 일급 객체
    : 함수를 변수에 할당
    : 함수를 다른 함수로 전달
    : 함수에서 함수를 반환
    : 객체와 프로토타입에 할당
    등 객체를 다루듯이 작업 가능

  • 함수 선언문

function 함수이름(매개변수1: 타입1, 매개변수2: 타입2[, ...]): 반환값 타입 {
  함수 몸통
}
  • 함수 표현식
const 함수이름 = function(매개변수1: 타입1, 매개변수2: 타입2[, ...]): 반환값 타입 { 
  함수 몸통 
}
  • 화살표 함수
const 함수이름 = (매개변수1: 타입1, 매개변수2: 타입2[, ...]): 반환값 타입 => 함수 몸통

✅ 변수와 달리 함수의 매개변수 타입과 반환 타입을 생략하는 것은 좋지 않음
(∵ 타입이 생략되어 있으면 함수의 구현의도를 알기 어렵고 잘못 사용하기 쉬움)

  • 함수 시그니처: 함수의 타입
(매개변수1 타입, 매개변수2 타입[, ...]) => 반환값 타입
ex) 함수 선언문 & 함수 시그니처 사용
	let 함수이름: (매개변수1 타입, 매개변수2 타입) => 반환값 타입 
    			= function (매개변수1: 타입1, 매개변수2: 타입2): 반환값 타입 {
            		함수 몸통
           		 }
  • 오버로드 시그니처
	type CreateElement = {
    	(tag: 'a'): HTMLAnchorElement
      	(tag: 'canvas'): HTMLCanvasElement
      	(tag: 'table'): HTMLTableElement
      	(tag: string): HTMLElement
    }

// 함수 구현
// 오버로드 시그니처를 모두 포함할 수 있도록 구현해야함
let createElement: CreateElement = (tag: string): HTMLElement => {
	...
}

✅ undefined 타입은 타입스크립트의 타입 계층도에서 모든 타입 중 최하위 타입 => 오류 방지를 위해 매개변수 값이 undefined인지 판별하는 코드를 작성해야함

  • 선택적 매개변수
    : 이름 뒤에 '?'를 붙여 선택적으로 호출할 수 있도록 함
    : 항상 값이 undefined로 고정

    ex) 선택적 매개변수가 있는 함수의 시그니처
		type OptionalArgFunc = (string, number?) => void 
  • 매개변수 기본값 지정
	(매개변수: 타입 = 매개변수 기본값)
  • this
    : 함수에서 this를 사용할 때는 항상 기대하는 this 타입을 함수에 첫 번째 매개변수로 선언
    : 함수 시그니처에 사용한 this는 예약어이므로 다른 매개변수와 완전히 다른 방식으로 처리됨
function fancyData(this: Date) {
    return `${this.getDate()} / ${this.getMonth()} / ${this.getFullYear()}`
}

console.log(fancyData(new Date()))			// Expected 0 arguments, but got 1.
console.log(fancyData.call(new Date()))		// 19 / 5 / 2022
profile
프론트엔드 개발자

0개의 댓글