[React] 제네릭(generic)

2023. 4. 27. 17:05·FE·Client/React
728x90
function add(a: number, b: number) {
  return a + b;
}
function printOutput(value: any) {
  console.log(value);
}

함수에서 아무것도 반환하지 않으면 (return문이 없으면) 반환타입 void를 사용한다.

void는 null 또는 undefined랑 비슷하지만 항상 함수와 결합해서 사용한다는 특징이 있다.

 

제네릭(generic)

function insertAtBeginning<T>(array: T[], value: T) {
  const newArray = [value, ...array];
  return newArray;
}
// 이 함수가 있으면 호출하기만 해도 기존 배열은 유지한 상태로 새로운 값을 추가할 수 있다.
// 이 함수의 장점: 기존배열을 변경하지 않는다, 대신 새로운 배열을 얻는다.

const demoArray = [1, 2, 3];
const updatedArray = insertAtBeginning(demoArray, -1);

// updatedArray[0].spilt("");

제네릭이란 타입을 마치 함수의 파라미터처럼 사용하는 것을 의미한다.

 

리액트와 타입스크립트로 함수형 컴포넌트를 만드려면 

1. React.FC 타입을 함수형 컴포넌트의 상수 옆에 사용한다.

import React from "react";

const Todos: React.FC = (props) => {
  return (
    <ul>
    	
    </ul>
  )
}

export default Todos;

2. <> 홀화살괄호를 붙인 다음 괄호 사이에 필요한 형태의 props를 정의한다.

    cf) 컴포넌트에 직접 만든 props가 필요하다면. 그리고 컴포넌트 안에서 직접 만든 props를 사용한다.

import React from "react";

const Todos: React.FC<items:string[]> = (props) => {
  return (
    <ul>
    	{props.items.map((item) => (
          <li key={item}>{item}</li>
          ))}
    </ul>
  )
}

export default Todos;

 

위의 코드 내 <li></li>구문을 컴포넌트로 쪼갠다면?

 

먼저 text만 받아올 경우,

받아오는 타입을 지정해줘야 한다. text: string

const TodoList: React.FC<{text:string}> = (props) => {
	return <li>{props.text}</li>;
};

export default TodoItem;
import TodoItem from "./TodoItem";

const Todos: React.FC<{ items: Todo[] }> = (props) => {
  return (
    <ul>
      {props.items.map((item) => (
        <TodoItem key={item.id} text={item.text} />
      ))}
    </ul>
  );
};

 

만약 Todo 객체 전체를 받는 방법을 사용한다면,

 

import Todo from "../models/todo";

const TodoItem:React.FC<{todo: Todo}> = (props) => {
    return <li>{props.todo.text}</li>
}

 

728x90

'FE·Client > React' 카테고리의 다른 글

[React] SPA(Single Page Application)란? (+CSR/SSR)  (0) 2024.11.21
[React] Dispatch<SetStateAction<type>> ?  (0) 2023.04.27
[React] 타입 추론(Type Inference) | 타입 별칭(Type Alias)  (0) 2023.04.27
[React] TypeScript  (0) 2023.04.27
[React] 리덕스 툴킷  (0) 2023.02.06
'FE·Client/React' 카테고리의 다른 글
  • [React] SPA(Single Page Application)란? (+CSR/SSR)
  • [React] Dispatch<SetStateAction<type>> ?
  • [React] 타입 추론(Type Inference) | 타입 별칭(Type Alias)
  • [React] TypeScript
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • Dev (422) N
      • App·Android (1)
      • BE (44)
        • HTTP 웹 기본 지식 (8)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (12)
        • 스프링부트와 JPA 활용 (11)
        • 스프링부트 시큐리티 & JWT (0)
        • PHP (6)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (21) N
        • AI (7)
        • Bigdata (6)
        • Database (1)
        • 빅데이터분석기사 (6) N
      • Infra (0)
      • Activity (1)
        • Education (0)
        • Intern (0)
        • 리모트 인턴십 6기 (1)
        • 구름톤 유니브 4기 (0)
        • SW교육기부단 15기 (0)
        • SK AI Dream Camp (0)
      • CS (8)
      • 취준 (13)
        • 자격증 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (3)
      • 코테 (270)
        • Algorithm (222)
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 회고 (0)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    너비우선탐색
    시뮬레이션
    티스토리챌린지
    문자열
    자료구조
    그래프탐색
    투포인터
    브루트포스 알고리즘
    백준
    최단경로
    수학
    그래프이론
    누적합
    이분탐색
    정렬
    구현
    다이나믹프로그래밍
    매개변수탐색
    그리디알고리즘
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[React] 제네릭(generic)
상단으로

티스토리툴바