한량처럼 살고 싶다

TypeScript의 Type(3) 본문

프론트엔드/TypeScript

TypeScript의 Type(3)

투영 2023. 4. 21. 22:06

1. unknown

해당 변수로 작업을 할 때, 그 변수의 타입을 확인하는 과정을 거쳐야만 작업이 가능하다.

let a: unknown;

let b = a + 1; //에러 발생

if (typeof a === 'number') {
    b = a + 1;
}

 

2. void

함수에서 어떤 것도 리턴하지 않을 때 void를 타입으로 지정한다.

참고로 타입스크립트는 똑똑해서 void를 쓰지 않아도 알아서 void로 인식한다.

function hello():void{
    console.log('x');
}

const a = hello();
a.toUpperCase(); //에러 발생

 

3. never

함수가 절대 리턴을 하지 않고, exception/오류 등을 발생시키는 함수일 때만 사용한다.

아래처럼 생긴 코드에서는 문제가 발생한다.

function hello():never{
    return true; //에러 발생, never 타입은 true를 반환할 수 없다.
}

아래와 같은 코드에서는 문제가 발생하지 않는다.

function hello():never{
    throw new Error("xxx");
}

 

또는 타입이 두가지일 수도 있는 상황에서 사용 가능하다.

아래에서 name은 string아니면 number로 타입을 지정해두었고 if 분기문에서 이를 확인한다.

하지만 두 가지 타입이 다 아닐 경우(마지막 else)에 name의 타입을 확인하면 never 타입이 된다.

function hello (name: string|number){
    if(typeof name==="string"){
        //name은 string
        console.log(name);
    }
    else if (typeof name==="number"){
        //name은 number
        console.log(name);
    }
    else {
        //name은 never
        //정상 작동 시 이 코드는 절대로 작동되지 않는다.
        throw Error("this type is error") //정상 작동되지 않았을 시 오류를 던지게 한다.
    }
}

 

'프론트엔드 > TypeScript' 카테고리의 다른 글

TypeScript의 function(3)  (0) 2023.04.23
TypeScript의 function(2)  (0) 2023.04.23
TypeScript의 function(1)  (0) 2023.04.22
TypeScript의 Type(2)  (0) 2023.04.21
TypeScript의 Type(1)  (0) 2023.04.14