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