TS에서는 JS에서만 있는 타입 뿐만 아니라 TS만의 타입도 가지고 있다. 이번에 포스팅 하는 3가지 타입이 그 예시이다. 시작하기에 앞서 간단히 이 타입에 대한 설명을 하자면 unknown은 모든 타입이 될 수 있는 타입이고, void는 아무것도 반환하지 않는 함수에 사용된다.
마지막으로 never는 절대 반환하지 않는 함수에서 사용된다는데 void랑 뭐가 다른지 잘 모르겠다. 강의의 예시로는 에러를 던지는 함수를 보여줬는데 조금 더 생각을 해봐야겠다..
+ 지피티한테 물어봤는데 void는 아무것도 반환하지 않는 메서드 즉, 콘솔출력 또는 이벤트 핸들러에서 주로 사용된다고 하고 never는 정상적으로 종료되지 않는 함수 즉 무한루프, 에러 던지기에 주로 사용된다고 한다.
unknown
어떠한 타입도 될 수 있는 타입. 하지만 any와는 다르게 해당 타입을 확인 해야한다. 에를 들어 API가 어떤 타입을 반환하는지 모를 때 사용되거나 인풋이 여러 타입이 될 수 있을 때 사용된다.
function check(temp : unknown){
if(typeof temp === "number"){ // 이러한 타입 확인이 반드시 필요
//number 타입일 때 실행되는 코드
}
if (typeof temp === "string"){
//string 타입일 때 실행되는 코드
}
...
}
function check(temp : unknown){
temp + 2 // 타입 확인이 없기 때문에 error 발생
}
void
어떠한 반환값을 가지지 않는 함수를 선언할 때 사용한다. C에서 사용했던 기억이 있는데 같은 기능을 수행한다고 한다. TS가 아무것도 반환하지 않는 함수를 자동으로 void로 인식하기 때문에 타입을 굳이 지정하지 않아도 된다.
function hi(){
console.log("배고파요") //return이 없는 메서드
}
never
절대 반환되지 않는 함수를 선언할 때 사용. 해당 메서드가 정상적으로 종료되지 않을 때 사용된다.
function throwError(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {
// 무한 루프이므로 종료되지 않음
}
}
function hello(temp : number | string){
if(typeof temp === 'number'){
// 여기서 temp의 타입은 number
}
elseif(typeof temp === 'string'){
// 여기서 temp의 타입은 string
}
else{
// 여기서 temp의 타입은 never
}
}
사실 아직 never 타입에 대해서는 정확히 모르겠다. 뭐 더 배우다 보면 알겠지 하는 생각으로 일단은 넘어가려 한다. 나중에 확실히 알게되면 글을 수정할 생각이다.
'Front end > TypeScript' 카테고리의 다른 글
[TypeScript] 추상클래스란 무엇인가 (임시) (0) | 2024.10.30 |
---|---|
[TypeScript] 다형성과 제네릭 (2) | 2024.10.27 |
[TypeScript] Readonly , Tuple에 대해서 알아보자 (0) | 2024.10.26 |
[TypeScript] 변수와 타입, 함수 생성 (1) | 2024.10.24 |
댓글