본문 바로가기
TypeScript

[TypeScript] 함수에 타입 지정하는 법

by 딩박사 2023. 10. 17.
반응형

* 본 포스팅은 필자가 개인적으로 학습한 내용정리 및 리뷰를 위해 포스팅합니다.


function 함수(x :number) :number {
    return x + 1
}
함수('2') X

▲ 함수는 파라미터, return 값을 타입지정 할 수 있다.(number로 지정했기에 문자를 넣으면 오류!!
 
 

function 함수(x :number) :void {
    1 + 2
}

 함수에서 void 타입 활용 가능(return을 사전에 막을 수 있음)
 
 

function 함수(x :number) :void {

}
----------------------------------
function 함수(x? :number) :void {

}

타입지정된 파라미터는 필수!!! 하지만 아래와 같이 변수? :number는 변수 :number|undefined와 같은 의미이다.
 
 

 


타입 확정을 위한 Narrowing과 Assertion
 

 
타입스크립트 프로그램에서 변수는 덜 정확한 타입에서 더 정확한 타입으로 변할 수 있습니다. 이 과정을 type narrowing이라고 한다.
 
 
 

function 함수(x :number|string) {
    if(typeof x === 'string') {
        return x + '1'
    } else {
    	return x + 1
    }
}

타입이 아직 확정되지 않은 경우 타입에러를 피하기 위해 Narrowing의 typeof 연산자 사용
(주의!! else 또는 else if를 안 쓰면 에러로 판단 위험)
 
 
 

Narrowing 판정 문법
1. typeof 변수
2. 속성명 in 오브젝트
3. 인스턴스 instanceof 부모

 
 
 
타입스크립트 Assertion은 프로그래머가 컴파일러에게 내가 너보다 타입에 더 잘 알고 있고, 나의 주장에 대해 의심하지 말라고 하는 것과 같다.
 
 

function 함수(x :number|string) {
    let array :number[] = [];
    array[0] = x as number;
}

타입 덮어쓰기로 x as number의 x는 number타입이 된다.
(Narrowing 할 때 사용하며 무슨 타입이 올지 100% 확신할 때 사용하도록 한다.)
 
 
 
 
 
 
 
 
 

참고 출처 : https://medium.com/nodejs-server/type-narrowing-ts-f62fc28f413f

Type Narrowing

“타입의 범위를 좁히면 코드가 더욱 안전해집니다.”

medium.com

 
 
 
 

결론

여러가지여러 가지 함수 타입 설정과 아직 확정하지 않는 타입에 대해서 좁은 영역으로 만들어주는 여러 가지 문법에 대해서 알고 있어야겠다.
경우의 수가 너무 많다..

반응형

댓글