ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5.30 TypeScript의 함수
    코드스테이츠 2023. 5. 30. 23:57

    JavaScript에서 함수는 모든 애플리케이션의 기본적인 구성 요소입니다. JavaScript에서의 함수와 마찬가지로 TypeScript에도 함수는 JavaScript와 마찬가지로 기명 함수(named function)와 화살표 함수(arrow function) 등으로 만들 수 있습니다.

    JavaScript에서 함수를 이렇게 작성했습니다.

    //named function
    function add(x, y){
    	return x + y;
    }
    
    //arrow function
    let add = (x, y) => {
    	return x + y;
    }

    이를 TypeScript로 다시 표현해 보겠습니다.

    //named function
    function add(x: number, y: number):number {
    	return x + y;
    }
    
    //arrow function
    let add = (x: number, y: number): number => {
    	return x + y;
    }

    TypeScript에서 함수를 표현할 때는 매개변수의 타입과 반환 타입을 명시해야 합니다. 각 매개변수에 해당하는 타입을 작성한 뒤, 반환되는 타입을 괄호 뒤에 작성을 해줘야 합니다. 이는 타입 추론 기능을 활용하지 않는다고 가정했을 때 필수입니다.

    만일 함수에 리턴값이 없다면, void를 사용하여 작성할 수 있습니다. 이 또한 타입 추론 기능을 활용하지 않는다고 가정했을 때 필수입니다.

    let printAnswer = (): void => {
    	console.log("YES");
    }

    또한 TypeScript는 JavaScript와 달리 매개변수의 개수에 맞춰 전달인자를 전달해야 합니다.

    let greeting = (firstName: string, lastName: string): string => {
    	return `hello, ${firstName} ${lastName}`;
    }
    
    //에러가 납니다.
    greeting('coding');
    
    //정상적으로 작동합니다.
    greeting('coding', 'kim');
    
    //너무 많은 매개변수를 보내 에러가 납니다.
    greeting('coding', 'kim', 'hacker');

    만약 개발자가 전달인자를 전달하지 않거나, undefined를 전달했을 때 할당될 매개변수의 값을 정해놓을 수도 있습니다. 이는 JavaScript에서의 default parameter와 같은 동작을 합니다.

    let greeting = (firstName: string, lastName: string ="kim"): string => {
    	return `hello, ${firstName} ${lastName}`;
    }
    
    //정상적으로 작동합니다. 
    greeting('coding');
    
    //정상적으로 작동합니다.
    greeting('coding', undefined);
    
    //너무 많은 매개변수를 보내 에러가 납니다.
    greeting('coding', 'kim', 'hacker');

    이때는 뒤의 인자로 undefined를 보내도 값은 “hello, coding kim”으로 반환됩니다.

    혹은 선택적 매개변수를 원한다면 매개변수의 이름 끝에 ?를 붙임으로써 해결할 수도 있습니다.

    let greeting = (firstName: string, lastName?: string): string => {
    	return `hello, ${firstName} ${lastName}`;
    }
    
    //정상적으로 작동합니다.
    greeting('coding');
    
    //정상적으로 작동합니다.
    greeting('coding', 'kim');
    
    //너무 많은 매개변수를 보내 에러가 납니다.
    greeting('coding', 'kim', 'hacker');

    그러나 이때는 greating('coding')과 같이 전달인자를 하나만 전달했기 때문에, 뒤의 매개변수는 undefined로 반환이 됩니다.

     

    '코드스테이츠' 카테고리의 다른 글

    5.30 TypeScript의 연산자 활용 타입  (0) 2023.05.31
    5.30 TypeScript의 함수 포팅  (0) 2023.05.31
    5.30 TypeScript의 타입 포팅  (0) 2023.05.30
    5.30 TypeScript의 타입  (0) 2023.05.30
    5.30 TypeScript  (0) 2023.05.30
Designed by Tistory.