TypeScript, 재귀함수- [TIL]

이태성·2022년 6월 13일
0

TIL

목록 보기
3/8

Agenda

  1. TypeScript 전용 타입
  2. 팩토리얼

1. TypeScript 전용 타입

  • tuple : 정해진 배열의 길이와 요소별 타입을 지정하고 싶을 때 사용

    tuple

    let human: {
      name: string;
      age: number;
      role: [string, number] // 튜플 표기법
    } = {
      name: "TaeSung",
      age: 20,
      role: ["abc", 10]
    }
  • enum

    • 숫자를 표현라고 싶으면서 인간이 읽을 수 있는 라벨로 표현하는 개념
    • 사용자 지정 타입

      enum

      enum Role { ADMIN, READ_ONLY, AUTHOR }; // enum 정의
       // or 
       enum Role { 'ADMIN', READ_ONLY = 100, AUTHOR = 200 } // enum 정의
        let human = {
         name: "TaeSung",
         age: 20,
         role: Role.ADMIN // enum 표기법
       }
       if (human.role === Role.AUTHOR) {
        console.log('is author');
      }
  • any

    • 모든 타입을 의미하는 타입
    • TS에서 가장 유연한 타입
    • 너무 유연하므로 TS의 타입지정이 주는 장점을 상쇄시켜서 추천 하지 않음
    • 어떤 값이나 종류의 테이터가 저장될지 전혀 모를 때 사용

      any

      let myHobbies: any[];
      myHobbies = ["Sports", "Music"]
  • union

    • 두 가지 이상의 타입을 지정하고 싶을 경우 사용

      union

      // 파이프 연산자(|)를 활용하여 여러 타입을 지정한다.
      function combine(input1: number | string, input2: number | string) {
      let result;
      if (typeof input1 === 'number' && typeof input2 === 'number') {
       result = input1 + input2;
      } else {
       result = input1.toString() + input2.toString();
      }
      return result;
      }
  • literal

    • 아주 명시적으로 특정 값을 지정하는 타입을 의미

      literal

      // 예시 1번
       const hello = "Hello World"; // "Hello World"라는 타입을 지정한 것
       let hi = "Hi World";        // let으로 변수를 선언했으므로 문자열 타입을 지정한 것 
       // 예시 2번
       let people: "taesung" | 123 | true
       people = "taesung"
       people = 123
       people = true

2. 팩토리얼

  • 재귀함수 : 특정 함수가 자기자신을 함수속에서 호출하는 함수
  • 백준 9단계 - 10872번 팩토리얼 코드공개
// 문제번호:10872번; 팩토리얼
const fs = require("fs");
const { join } = require("path");
const stdin = (
  process.platform === "linux" ? fs.readFileSync("/dev/stdin").toString() : `10`
).split("\n");

const input = (() => {
  let line = 0;
  return () => stdin[line];
})(); // 여기까진 고정으로 사용

// 로직 시작
let num = +input();

function factorial(init) {
  if (init === 0) return 1;
  return init * factorial(init - 1); // 이부분때문에 재귀함수라고 불린다.
}

console.log(factorial(num));
profile
재밌게 뚫고 나가자

0개의 댓글