Java Script & Type Script/TIL
3월 21일 TIL : TypeScript-call signature, unknown,void,never
쩰라
2023. 3. 23. 23:24
728x90
변수의 타입을 미리 알지 못할때 unknown을 사용할 수 있다.
let a: unknown;
if (typeof a ==="number"){
let b = a+1}
void는 값을 반환하지 않는 함수의 반환 값.
함수에 return 문이 없거나 해당 return 문에서 명시적 값을 반환하지 않을 때 항상 유추되는 타입.
never는 함수가 절대 return하지 않을 때 발생
예를 들어 함수에서 exception이 발생할 때.
function z (name: string | number){
if (typeof name==="string"){
} else if (typeof name=="number"){
}else {
name
}
}
name은 string혹은 number임. 이미 앞에서 string일 때와 number일 때에 대해 작성되어있어 else에서 name은 never이 됨. 실행되면 안됨.
Call Signature : 함수 위에 마우스를 올렸을 때 보게되는 것.
인자의 반환 타입과 함수의 반환타입을 알려줌.
type A= (a: number, b: number) => number;
그리고.. 늘 헷갈렸던 중괄호 이용 참고하면 좋은 글
{}를 사용하면 그 값이 반환값이 함수 내부의 내용으로 처리가 됩니다.
밑의 예시를 보면 이해가 되실거라 생각됩니다.
1. const add:Add = (a,b) => a+b 를 함수로 풀면 다음과 같게 됩니다.
function add(a, b) {
return (a+b)
}
2. const add:Add = (a,b) => {a+b} 를 함수로 풀면 다음과 같게 됩니다.
function add(a, b) {
a+b;
}
즉 애로우함수에서 {}를 사용하게 되면 그 안의 값은 반환이 아니라 함수 내부 내용으로 처리되기에 반환값이 없는 void로 처리됩니다. 이에 따라 위에서 미리 선안한 Add자료형의 반환값은 number라고정해놓은 내용과 충돌하기에 에러가 발생합니다.
728x90