3주차 TS.Study_과제 | indexed accsee types 에러조사 | 제네릭 함수 만들어보기

zeroha·2024년 12월 2일
0

TypeScriptStudy

목록 보기
9/32
post-thumbnail

인덱스드 엑세스 타입 indexed accsee types

: 다른 타입의 특정 속성이 가지는 타입을 조회하기 위해 사용.
( 배열의 요소 타입을 조회 )

const PromotionList = [
{ type: "product", name: "chicken" }, 
{ type: "product", name: "pizza" }, 
{ type: "card", name: "cheer-up" },
];

type Elementof<T>= typeof T[number];

// type PromotionItemType = { type: string; name: string }
type PromotionItemType = ElementOf‹PromotionList>;

의도

: PromotionList 배열을 정의하고, Elementof 타입을 사용하여 배열의 항목 타입을 추출

바로잡을 부분

: ElementOf는 잘못된 표기이고, 정확한 표기는 Elementof입니다.
-> 이를 통해 배열이나 튜플의 각 요소 타입을 추출가능

실행결과

  • PromotionItemType
    : 배열의 각 객체에 포함된 { type: string; name: string } 타입이 됨.
  • [number]: 배열의 각 요소 타입을 추출.

  • type Elementof<T> = typeof T[number];

    • T[number]: T 배열에서 각각의 요소 타입을 추출하는 방법.
    • typeof : T의 타입을 가져옴.
    • 여기서 T는 배열이고, number는 배열의 인덱스를 나타냄. (-> 배열의 각 요소를 참조하는 방법.)
    • 배열에서 각 요소의 타입을 추출하는 방법으로, 배열의 타입을 동적으로 추출할 때 주로 사용
  • Elementof<PromotionList>
    : PromotionList 배열의 요소 타입을 추출하고, PromotionItemType에 PromotionList의 각 객체 타입이 대입됨.

PromotionList의 타입이 배열 리터럴이므로, typeof PromotionList[number]로 배열의 요소 타입을 정확히 추출할 수 있음.


제네럴 타입 만들기

function hayoung<T>(value: T): T {
  return value;
}

<T>
: 함수 이름 옆의 <T>는 제네릭 타입 변수를 선언하는 부분
이 T는 이 함수에서 사용할 타입의 "이름"

예: <T> → "나는 T라는 타입 변수를 사용할 거야!"

value: T
: 여기의 T는 매개변수 value의 타입
value는 제네릭 타입 T로 지정된 값.

예: value: T → "value의 타입은 내가 호출 시 결정할 T야."

): T
: 함수의 반환 타입
여기의 T는 함수가 반환하는 값의 타입

예: ): T → "이 함수는 호출 시 결정된 T 타입의 값을 반환할 거야."

  • 매개변수
    value: T → value라는 매개변수의 타입은 T

-> value는 어떤 타입이든 될 수 있음.

  • 반환 타입
    : T → 함수는 T 타입의 값을 반환
    전달된 매개변수와 동일한 타입의 값을 반환하도록 보장...

function getFirstElement<T>(arr: T[]): T | undefined {
return arr[0];
}

const numberArray = [1, 2, 3];

console.log(getFirstElement(numberArray)); // 1
  • <T> : 제네릭 타입 변수를 선언하는 부분
    = 함수가 호출될 때 타입을 추론하거나 명시적으로 지정할 수 있도록 준비하는 단계.

  • T : 함수 선언 시 <T>를 통해 정의된 제네릭 타입
    = 함수 내부에서 사용하는 타입으로, 배열의 요소 타입을 의미. = 배열의 타입을 추론
    ( T라는 이름을 사용하여 이 함수가 임의의 타입을 처리할 수 있다고 선언하는 것 )

  • `arr: T[]` 

    : 매개변수 arr는 요소 타입명시 = T인 배열임을 나타냄.
    - arr는 타입이 T[]인 매개변수라는 뜻
    - T[]는 "요소 타입이 T인 배열"을 의미

    를 들어:
    arr: number[] → arr는 숫자 배열.
    arr: string[] → arr는 문자열 배열.

    • T | undefined : 반환 값은 요소 타입 T 또는 undefined일 수 있음
  • numberArray의 타입을 추론 -> 처리.
    : numberArray의 타입은 number[]이므로, T는 number로 추론

profile
하 영

0개의 댓글

관련 채용 정보