Script/TypeScript

[TypeScript] TypeScript 함수 선언 방법

hhnn 2022. 5. 30. 17:33

1. 함수의 기본 선언 방법

function sum(a: number, b: number):number {
	return a + b;
}


//함수의 반환 값에 타입을 정하지 않을 때는 void 사용
function sum(a: number, b: number):void {
	return a + b;
}

 

 

2. 함수의 인자(Argument)

ts는 함수의 인자를 모두 필수 값으로 간주한다.

함수의 매개변수를 설정하면 undefined나 null이라도 인자로 넘겨야 한다.

컴파일러에서 정의된 매개변수 값이 넘어왔는지 확인한다. 정의된 매개변수 값만 받을 수 있고, 추가 인자는 받을 수 없다.

function sum(a: number, b: number): number {
  return a + b;
}
sum(10, 20); // 30
sum(10, 20, 30); // error, too many parameters
sum(10); // error, too few parameters

만약 b에 인자를 넣어주었는데 사용할수도 사용하지 않을 수도 있다.

function sum(a: number, b?: number): number {
  return a + b;
}
sum(10, 20); // 30
sum(10, 20, 30); // error, too many parameters
sum(10); // 10

 

 3. 함수의 타입이 불확실할 경우 Narrowing을 사용한다.

function sum (x : number | string) {
    if( typeof x === 'string') { //typeof로 x라는 변수의 타입을 확인함 
    	return x + '3'
    } else {
    	return x + 3
    }
}

sum(2)

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/typeof

4. 확장성 있는 함수 Generic 함수로 사용하기

//기본 typeScript 함수
function sum( x: unknown[] ) {
	retrun x[0]
}
let a = sum ([4,2]); 
//값이 number로 나올것 같지만 nuknow로 지정해놓았기 때문에 number는 아님

//generic 함수 만들기

function sum<MyType>( x : MyType[] ) :MyType {
    return x[0]
}
let a = sum<number>([4,2])

4-1. 타입을 제한하고 싶을때는 extends 문법을 사용하자.

function sum<MyType extends number>( x : MyType ) {
    return x -1
}
let a = sum<number>(10);

extends 를 사용하게 되면 type 파라미터에 넣을 값을 제한할 수 있다.

 

 

 


참고자료

타입스크립트 핸드북

반응형
SMALL