[TS] 타입 조작 및 고급 타입 활용 연습

TIL

1. 조건을 만족하는 함수 타입 구현

getSellersFromProducts 함수
- 매개변수로 받은 Product 배열로부터, seller 객체만 추출해 새로운 배열로 반환
- 반환값을 명시적으로 설정
interface Product {
  id: number;
  name: string;
  price: number;
  seller: {
    id: number;
    name: string;
    company: string;
  };
}

function getSellersFromProducts(products: any): any {
  return products.map((product) => product.seller);
}
function getSellersFromProducts(products: Product[]): Product["seller"][] {
  return products.map((product) => product.seller);
}

 

2. 조건을 만족하는 타입 정의

PartialProduct 타입
- Product 타입의 모든 프로퍼티를 다 선택적 프로퍼티로 바꾼 타입

ReadonlyProduct 타입
- Product 타입의 모든 프로퍼티를 다 읽기 전용 프로퍼티로 바꾼 타입

ReadonltPartialProduct 타입
- Product 타입의 모든 프로퍼티를 다 선택적, 읽기 전용 프로퍼티로 바꾼 타입
interface Product {
  id: number;
  name: string;
  price: number;
  seller: {
    id: number;
    name: string;
    company: string;
  };
}

type PartialProduct = any;

type ReadonlyProduct = any;

type ReadonlyPartialProduct = any;​
type PartialProduct = {
  [key in keyof Product]?: Product[key];
};

type ReadonlyProduct = {
  readonly [key in keyof Product]: Product[key];
};

type ReadonlyPartialProduct = {
  readonly [key in keyof Product]?: Product[key];
};

 

3. 조건을 만족하는 타입 구현

Score 타입
- 점수를 나타내기 위한 문자열 타입
- 형식: ${0부터 10까지의 정수}-${0부터 10까지의 정수}
type Score = any;​
type N = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;

type Score = `${N}-${N}`;

'TIL' 카테고리의 다른 글

[TS] infer (타입 추론)  (0) 2025.11.05
[TS] 분산적인 조건부 타입  (0) 2025.11.05
[TS] 템플릿 리터럴 타입  (0) 2025.11.05
[TS] 맵드 타입  (0) 2025.11.05
[TS] keyof와 typeof 연산자  (0) 2025.11.05
'TIL' 카테고리의 다른 글
  • [TS] infer (타입 추론)
  • [TS] 분산적인 조건부 타입
  • [TS] 템플릿 리터럴 타입
  • [TS] 맵드 타입
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    인터페이스
    Pages Router
    Spa
    emotion diary
    cs50
    자료구조
    제네릭
    memory
    함수 타입
    C
    알고리즘
    Next.js
    트러블 슈팅
    algorithm
    앱 라우터
    CS
    ai 감성 일기장
    App Router
    useState
    generic
    타입 좁히기
    배열
    바닐라 자바스크립트
    클래스
    typescript
    문자열
    javascript
    Trouble Shooting
    react
    페이지 라우터
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
[TS] 타입 조작 및 고급 타입 활용 연습
상단으로

티스토리툴바