Typescript

2. Function Parameter Annotation

서앶인 2022. 10. 13. 13:26

 

Function Parameter
  • 파라미터 타입을 지정하지 않으면 암묵적 Any 타입 파라미터로 지정
// 암묵적 Any 타입 파라미터
function square (num) {
	return num * num
}

square(5) // 가능
square('strings') // 가능


// 명시적 타입 파라미터
function greeting (name: string) {
	let temp = name * name // ERROR
	return `Good morning, ${name}`
}

greeting(5) // 불가능
greeting('서앶진') // 가능

 

  • 다수의 타입 파라미터를 가지는 함수는 호출 시에 파라미터 갯수와 타입을 잘 맞춰야 함
// 다양한 파라미터
function doSomethings (name: string, age: number, isTrue: boolean) {
	console.log(name, age, isTrue)
}

doSomethings ('shj', 26, true) // 가능
doSomethings ('shj') // 불가능 - 파라미터 갯수가 맞지 않음

 

  • 초기값 (기본값) 을 가지는 함수 파라미터
  • 파라미터에 초기값을 선언 ( 타입 명시를 하지 않아도 타입 추론으로 지정 )
function tempFnc (person = 'stranger') {
    return `Hi, ${person}!`
}

tempFnc() // 가능 (출력 : Hi, stranger!)
tempFnc('서앶진') // 가능 (출력 : Hi, 서앶진!)

 

 

Function Return Types
  • 함수의 반환 타입 명시
  • 함수의 파라미터 뒤:타입 지정
  • Return type을 지정하지 않아도 입력된 파라미터에 따라 추론 가능
function getDouble (num: number): number {
	return num * num
}

 

  • forEach, map, filter 등과 같은 함수들이 갖는 파라미터는 문맥상 타입 추론됨
const colors = ['red', 'orange', 'yellow', 'green']

function getColors () {
	let newColors = colors.map(color => { // color: string
    	return color.toFixed() // ERROR - color is string
    	return color.toUpperCase()
    })
    
    return newColors
}

 

  • Void 타입 반환
  • 어떠한 값도 반환하지 않는 함수
  • 아무것도 반환하지 않는 경우, 백그라운드에서 undefined 상태로 반환
let temp: string
function voidFnc (params: boolean): void {
	if (params) {
    	return 'TRUE' // ERROR
        temp = 'TRUE'
    } else {
    	temp = 'FALSE'
    }
}

console.log(voidFnc(false)) // 출력: undefined

 

  • Never 타입 반환
  • 예외를 발생시키는 함수, 무엇이든 반환할 기회 절대 없음
function makeError = (msg: string = 'TEST ERROR'): never => {
	throw new Error(msg)
}

function makeLoop = (): never => {
	while (true) {
    	console.log('TRUE')
    }
}

makeError()
makeLoop()