[TIL] 7월 27일 목요일

Seoyoung Hong·2023년 7월 28일
0

TIL

목록 보기
7/11

알고리즘 스터디

  1. 프로그래머스

<아이스 아메리카노>

  • parseInt() : 문자열 숫자로 바꾸는 함수

<배열 뒤집기>

  • .reverse() : 배열 뒤집는 함수

유틸리티 타입

  1. Partial : "유연하게 타입의 속성을 선택해서 객체를 만들 수 있음"
    -타입 T의 모든 속성을 선택적으로 만들어요!
    -기존 타입의 일부 속성만 제공하는 객체를 쉽게 생성할 수 있습니다.
  • 기존에 없는 속성을 넣어서는 안됩니다!

    interface Person {
    name : string;
    age : number;
    }
    const updatePerson = (person : Person, fields : Partical): Person => {return {...person, ...fields};
    ;}

    const person : Person = {name: "Spartan", age:30};
    const chagnedPerson = updatePersonn (person, {age:31});

  • field 구성 될 수 있는 경우의 수
    name이라는 속성만/ age라는 속성만 / name, age라는 속성이 둘 다,
    이 밖의 상황은 허용하지 않아요!

  1. Required : "객체에 정의된 모든 속성이 반드시 전부 제공이 되는 객체를 생 성해야 할 때"
  • Partial 타입과는 반대로 Required 타입은 타입 T의 모든 속성을 필수적으로 만듭니다! interface Person {
    name: string;
    age: number;
    address?: string; // 속성 명 뒤에 붙는 ?가 뭘까요
    } ?는 선택적 속성 but type RequiredPerson = Required; 되면 ?도 필수적 속성이 됨
  1. Readonly : "타입의 속성들로 구성된 객체가 아니어도 완전한 불변 객체로 취급"

    -타입 T의 모든 속성을 읽기 전용(read-only)으로 만들어요!

      interface DatabaseConfig {
        host: string;
        readonly port: number; // 인터페이스에서 readonly 타입 사용 가능
      }
    
      const mutableConfig: DatabaseConfig = {
        host: "localhost",
        port: 3306,
      };
    
      const immutableConfig: Readonly<DatabaseConfig> = {
        host: "localhost",
        port: 3306,
      };
  2. Pick<T, K>

  • 타입 T에서 K 속성들만 선택하여 새로운 타입을 만듭니다!

    interface Person {
    name: string;
    age: number;
    address: string;
    }

    type SubsetPerson = Pick<Person, "name" | "age">;

    const person: SubsetPerson = { name: "Spartan", age: 30 };

  1. Omit<T, K> = "기존 타입에서 특정 속성을 제거한 새로운 타입을 쉽게 생성"
  • 타입 T에서 K 속성들만 제외한 새로운 타입을 만듭니다!
    -Pick<T, K> 유틸리티 타입과는 반대의 동작이죠!

    interface Person {
    name: string;
    age: number;
    address: string;
    }

      type SubsetPerson = Omit<Person, "address">;
    
      const person: SubsetPerson = { name: "Alice", age: 30 };

    더 많은 유탈리티 타입 참고

    https://www.typescriptlang.org/ko/docs/handbook/utility-types.html

profile
매일 나아지는 개발자 홍썸머

0개의 댓글