Daily Front_Minhhk

[TS] 함수 반환 타입 + unknown 본문

Study/Typescript

[TS] 함수 반환 타입 + unknown

Minhhk 2023. 5. 8. 22:38
// return 반환을 명시적으로 할당 할 수 있다.

function add(num1: string, num2: string) : string{
  return num1 + num2
}

 

 

void 반환타입
// return 이 없으면 : void 반환

//! 값을 반환하지 않는 함수를 사용하는 경우에는 void
// 에러는 없지만! 아무것도 반환하지 않기 때문에 반환문이 없다 :void
function printResult(num: number) {
  console.log("result : " + num)
}
// ===
function printResult2(num: number) : undefined {
  console.log("result : " + num)
  return
}

// undefined 반환
console.log(printResult(add(5,4)))

 

 

타입의 기능을 하는 함수
// let combineValue : Function;

// number 반환 하는 combineValue 함수
let combineValue : (a : number, b: number) => number;
combineValue = add;
console.log(combineValue(1,5)) // 6

 

콜백 함수
// 콜백함수에서도 파라미터의 타입은 정확히 명시하고, 함수타입은 void 어떠한 타입으로 반환 될지 강요 없음

function addAndHandle(n1: number, n2: number , cb : (num : number) => void) {
  const result = n1 + n2;
  cb(result)
}

addAndHandle(10,20,(result) => {
  console.log(result)
})

 

 

unknown 타입은 any보다 제한 적이지만,, 그냥 string, number, boolean 이나 쓰자!!
let userInput : unknown;
let userName : string;
// 에러발생 없이 어떤 값이든 저장할 수 있다는 것 === unknown
// any 보다 제한 적

userInput = 5;
userInput = "max"

// unknown 일 때, 타입 지정 해주면 대입 가능,
// 바로 userName = userInput 하면 에러발생
// any 사용 할 때, 타입지정 조건 없이 바로 userName = userInput 대입 가능
// 하지만 그냥 string, number, boolean 이나 쓰자!

if(typeof userInput === 'string') {
  userName = userInput;
}