본문 바로가기
IT개발/TypeScript

[TypeScript]나만 보는 TypeScript 기초 메모장

by Thompson 2025. 1. 31.
728x90

"자바스크립트"와 "타입스크립트"의 차이점 : 타입 유무

  const message = "hello";
  console.log(message);

  const message1: string = "hello2";
  console.log(message1);
  //message: string은 message가 문자열 타입임을 명시.

React.FC : 리액트 컴포넌트 타입

import React from "react";

const HelloWorld: React.FC = () => {
  return <h1>Hello, World!</h1>;
};

export default HelloWorld;

props의 전달 방식( Props란? )

import React from "react";

type HelloWorldProps = {
  name: string; //name이라는 문자열 타입의 props
}

const HelloWorld: React.FC<HelloWorldProps> = ({ name }) => {
  return <h1>Hello, World! {name}!</h1>;
};

export default HelloWorld;

HelloWorld name="John"처럼 App 컴포넌트에서 name prop을 전달(타입은 문자열!!)

import React from "react";
import MemoPad from "./components/HelloWorld";

const App: React.FC = () => {
  return (
    <div>
      <HelloWorld name="John" />
    </div>
  );
};

export default App;

 


  let age: number = 25; //정수
  let name1: string = "JOHN"; //문자열
  let isOnline: boolean = true; //논리
  let numbers: number[] = [1,2,3]; // 정수 배열
  let person: {name2 : string; age : number} = { name2: "Alice", age: 30}; // 문자 배열
  function add(a: number, b: number): number { 
    return a + b;
  }; // 함수

간단한 컴포넌트

import React from "react";

type MemoPad = {
  name: string; // name이라는 문자열 타입의 props
};

const MemoPad: React.FC<MemoPad> = ({ name }) => {
  return <h1>Hello, World! {name}!!</h1>;
};

export default MemoPad;
import React from "react";
import MemoPad from "./components/MemoPad";

const App: React.FC = () => {
  return (
    <div>
      <MemoPad name="John" />
    </div>
  );
};

export default App;

출력 화면


리스트 만들기

import React from "react";

type TodoItemProps = {
  task: string; // 할 일 내용
};

const TodoItem: React.FC<TodoItemProps> = ({ task }) => {
  return <li>{task}</li>;
};

export default TodoItem;
import React, { useState } from "react";
import TodoItem from "./TodoItem";

const TodoList: React.FC = () => {
  const [tasks, setTasks] = useState<string[]>([]);
  const [input, setInput] = useState<string>("");

  const addTask = () => {
    if (input.trim() === "") return;
    setTasks([...tasks, input]);
    setInput("");
  };

  return (
    <div>
      <h1>Todo List</h1>
      <input
        type="text"
        value={input}
        onChange={(e) => setInput(e.target.value)}
        placeholder="Add a task"
      />
      <button onClick={addTask}>Add</button>
      <ul>
        {tasks.map((task, index) => (
          <TodoItem key={index} task={task} />
        ))}
      </ul>
    </div>
  );
};

export default TodoList;
import React from "react";
import MemoPad from "./components/MemoPad";

const App: React.FC = () => {
  return (
    <div>
      <TodoList />
    </div>
  );
};

export default App;

 

useState란?

React에서는 컴포넌트가 데이터를 기억하려면 상태(state)를 관리. 이때 useState라는 훅(Hook)을 사용합니다.

const [input, setInput] = useState<string>("");
  • input: 현재 상태 값
  • setInput: 상태 값을 업데이트하는 함수
  • useState<string>(""): 초기 값은 빈 문자열

이벤트 처리

React에서는 사용자 이벤트(버튼 클릭, 입력 등)를 다룸

<input type="text" value={input} onChange={(e) => setInput(e.target.value)} />
 
  • onChange={(e) => setInput(e.target.value)} : 사용자가 입력한 값이 변경될 때마다 상태 값 input이 업데이트
 
<button onClick={addTask}>Add</button>
  • onClick={addTask} : 버튼이 클릭되었을 때 addTask 함수가 호출

map 함수

React에서는 리스트를 렌더링할 때 map 함수를 사용

const [tasks, setTasks] = useState<string[]>([]);
  
{tasks.map((task, index) => (
          <TodoItem  key={index} task={task} />
        ))}
  • tasks.map(...) : tasks 배열의 각 항목에 대해 TodoItem 컴포넌트를 렌더링합니다.
  • key={index} : 각 항목에 고유한 키를 설정

'IT개발 > TypeScript' 카테고리의 다른 글

[TypeScript]BrowserRouter, HashRouter 차이(Vite)  (0) 2025.01.30