타입스크립트에서 함수의 타입은 어떤 방식으로 선언되는지, 그리고 파라미터들의 특성에 대해서도 알아보자 :)
함수
1) 타입 선언
- 타입스크립트 함수에서는 총 3가지 타입을 정의할 수 있다.
- 매개변수 타입
- 반환값 타입
- 구조 타입
- 이 중, 매개변수와 반환값 타입 선언에 대해 알아보자
(1) 매개변수 타입 설정
- js의 경우 타입을 선언하지 않고 함수를 정의한다.
//js
function sum1(a, b) {
return a + b;
}
- 하지만 타입스크립트의 경우
매개변수:타입
형태로 타입을 선언한다.
//ts
function sum2(a:number, b:number) {
return a+ b;
}
- 매개변수에서 spread 문법을 사용할 수도 있는데 방법은 아래와 같다.
//ts
function firstElement(...nums:number[]):number {
return nums[0];
}
(2) 반환값 타입 설정
- 타입스크립트에서는 반환값에 대한 타입을 정의할 수 있다.
function sum2(a:number, b:number):number {
return a+ b;
}
- 하지만 타입스크립트는 타입추론을 하므로,
number
타입인a
,b
를 더했을 때 반환값이number
라고 추론한다. - 아래와 같이 반환값에 대한 타입을 선언하지 않았지만, 반환값이
number
라고 추론된 상태이다.
- 만약 반환값의 타입을 정하지 않을 때는
void
라고 지정한다.
function func():void {
console.log('gg')
}
2) 파라미터 특성
타입스크립트는 js와 달리 파라미터에는 여러가지 특성이 있는데, 아래에서 알아보자 :)
(1) 파라미터 제한성
- js는 파라미터를 제한하지 않는다.
- 이 말이 무슨 말이냐면,
num
이라는 함수는 총 2개의 인자를 받을 수 있다.
//js
function num(a, b) { //인자 2개
console.log(a, b)
}
- 그런데 해당 함수에 여러 개의 인자를 넘겨도,
js
에서는 앞선 2개만 받고 별도의 에러를 띄우지 않는다는 말이다.
num(1, 2, 3, 4, 5); // 1, 2
- 하지만 타입스크립트에서는 함수가 받을 수 있는 인자 개수를 초과할 경우 에러를 띄운다!
//ts
function num(a:number, b:number):void {
console.log(a, b)
}
num(1, 2, 3, 4, 5); //error!
(2) 옵셔널 파라미터
- 기본적으로 타입스크립트는 인자 개수에 엄격하다.
function text(a: string, b:string, c:string) {
console.log(a, b, c);
}
- 그러므로 필요로 하는 인자보다 적은 개수를 넘기면 오류를 띄운다.
text('a', 'b');
- 하지만 인자를 선택적으로 넘기고 싶은 경우에 사용할 수 있는 방법이 있다.
파리미터?
라고 하면 해당 파라미터를 넘기지 않아도 된다는 의미가 된다.
function text(a: string, b?:string, c?:string) {
console.log(a, b, c);
}
text('a', 'b'); //a, b
반응형
'개발 기술 > 타입스크립트' 카테고리의 다른 글
[ts] 리터럴 타입으로 추론해줘!(with. const, as const, Object.freeze) (0) | 2023.12.12 |
---|---|
타입스크립트 타입, union & intersection (0) | 2021.10.19 |
타입스크립트, 인터페이스와 타입 별칭 (0) | 2021.10.14 |
타입스크립트 기초, 타입 (0) | 2021.10.09 |
타입스크립트 기초(1), 타입스크립트란? (0) | 2021.10.02 |
댓글