본문 바로가기

Typescript

[Typescript] 함수

타입스크립트로 함수를 정의할 때는 크게 3가지 타입을 정의할 수 있습니다.

- 함수의 파라미터(매개변수) 타입

- 함수의 반환 타입

- 함수의 구조 타입

 

1. 함수 타입 선언

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

 

함수의 리턴 값에 타입을 정하지 않을 때 void 사용

function sum(x :number) :void { 
  // 아무런 값을 리턴하고 싶지 않을 때 사용
}

 

2. 함수 인자

- 함수의 파라미터가 옵션일 경우

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

 

- 함수의 파라미터 초기화

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

 

- 함수의 파라미터에 rest문법 적용

function sum(a: number, ...nums:number[]): number {
	const total = 0;
    for(let numbers of nums){
    	total += numbers
    }
    return a + total;
}

 

3. 함수 타입 확정하기

함수의 파라미터에서 사용할 수 없는 것들

// 파라미터의 값이 union 타입일 경우
function count(x :number | string){ 
  return x + 1;
}

// 파라미터가 옵셔널 체이닝일 경우
function count(x? :number) :number { 
  return x * 2 
}

이럴 경우에는 변수가 애매하다고 판단하여 오류가 발생된다. Narrowing 이나 Assertion으로 타입을 확정해주면 된다.

 

Narrowing

: if문 등으로 타입을 하나로 정해주는 것을 뜻합니다.

 

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

// Narrowing에 사용할 수 있는 문법
// typeof변수
// 속성명 in 오브젝트
// 인스턴스 instanceof 부모

 

Assertion

: 파라미터의 타입을 강제로 지정해주는 것을 뜻합니다. union type일 경우 하나의 정확한 타입으로 정해주는 역할입니다.

function count(x :number | string){ 
    return (x as number) + 1 
}

 

'Typescript' 카테고리의 다른 글

[TypeScript] 타입스크립트 기본 타입  (0) 2023.05.23