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()