TypeScript 시작하기 (4) - 함수에 타입 지정하는 법 & void 타입

funfungun·2025년 1월 4일
0

TypeScript 시작하기

목록 보기
4/18
post-thumbnail

이번 시간에는 타입스트립트에서 함수에 타입을 지정하는 방법과 void 타입을 알아보겠습니다.


  1. 이전 시간에 타입스크립트 문법 10분 정리에서 함수에 타입을 지정하는 방법은 다룬 바 있습니다. 함수에서는 void 타입도 활용이 가능합니다. return 할 것이 없을 경우에 사용합니다. 두번째 코드에서처럼, 화살표 함수에서 중괄호를 생략하면 return 문을 작성한 것이나 마찬가지이기 때문에 오류가 발생합니다.

    const add = (x: number): void => {
      1 + 1;
    };
    const add = (x: number): void => 1 + 1; // 에러 발생

  1. 파라미터에 타입이 지정되어 있는 경우, 파라미터는 필수입니다. 파라미터가 옴션일 경우에는 파라미터 변수에 물음표를 붙여주면 됩니다.

    const add = (x: number): void => {
      1 + 1;
    };
    
    add(); // 에러 발생
    const add = (x?: number): void => {
      1 + 1;
    };
    
    add(); // 정상 작동

  1. 물음표는 들어올 수도 있다는 뜻을 가지고 있지만, 사실 undefined와 같습니다. 하지만 아래 코드에선 ?를 or 연산자와 undefined 로 대체하였는데 에러가 발생합니다. 타입 체크 관점에서는 오류가 있어도 실행은 될 수 있지만, or 연산자로 undefined 라고 타입을 명시한 경우에는 파라미터로 undefined 를 명시해주어야만 합니다.

    const add = (x: number | undefined): void => {
      1 + 1;
    };
    
    add(); // 에러 발생
    const add = (x: number | undefined): void => {
      1 + 1;
    };
    
    add(undefined); // 정상 작동

  1. 연습으로, 이름을 파라미터로 입력하면 콘솔창에 "안녕하세요 홍길동" 을 출력해주고, 아무것도 파라미터로 입력하지 않고 함수를 사용하면 "이름이 없습니다." 를 출력하는 함수를 만들어봅시다.

    const nickname = (x?: string): void => {
      if (x) {
        console.log("안녕하세요 " + x);
      } else {
        console.log("이름이 없습니다.");
      }
    };
    
    nickname("홍길동"); // 안녕하세요 홍길동
    nickname(); // 이름이 없습니다.

  1. 함수에 숫자 또는 문자를 집어넣으면 자릿수를 세어 출력해주는 함수도 만들어봅시다. 숫자 또는 문자 이외의 자료가 들어오면 안됩니다.
    const line = (x: string | number): number => {
      return x.toString().length;
    };

  1. 마지막으로 결혼 가능 확률을 알려주는 함수를 만들어봅시다.
    a. 함수의 파라미터로 월소득(만원단위), 집보유여부(true/false), 매력점수 ('상' or '중' or '하') 를 입력할 수 있어야합니다.
    b. 월소득은 만원 당 1점, 집보유시 500점 & 미보유시 0점, 매력점수는 '상'일 때만 100점으로 계산합니다.
    c. 총 점수가 600점 이상일 경우 "결혼가능"을 return 해줘야합니다. 그 외엔 아무것도 return하지 않습니다.

    (예시)
    결혼가능하냐(700, false, '중') 이렇게 사용할 경우 "결혼가능"을 return 해줍니다.
    결혼가능하냐(100, false, '상') 이렇게 사용할 경우 아무것도 return되지 않습니다.

    const marriage = (
      salary: number,
      house: boolean,
      attract: string
    ): string | void => {
      let num: number = 0;
      num += salary;
      if (house) num += 500;
      if (attract === "상") num += 100;
      if (num >= 600) return "결혼가능";
    };
    
    console.log(marriage(700, false, "중")); // 결혼가능
    console.log(marriage(100, false, "상")); // undefined

지금까지 함수에 타입을 지정하는 법과 void 타입에 대해 알아보았습니다. 다음 시간에는, Narrowing 과 Assertion 에 대해 알아보겠습니다.

profile
Commercial Art

0개의 댓글