제네릭(Generics)

H802·2024년 11월 1일

📘 제네릭(Generics)

  • 함수나 클래스가 여러 타입을 받을 수 있게 해주는 방법
    : 예를 들어, 숫자를 담는 배열과 문자열을 담는 배열을 만드려고 할때, 제네릭을 사용하면 하나의 함수 or 클래스를 만들어 어떤 타입의 배열이든 처리 가능!
  • 제네릭을 사용하면 코드를 더 유연하고 재사용 가능해짐
function printArray<T>(items: T[]) {
    items.forEach(item => console.log(item));
}
  • <T>
    • 변수 이름 바로 뒤에 <T> 붙임
    • 타입 매개변수
    • T는 나중에 어떤 타입이든 대체할 수 있는 자리표시자

📘 Map

const stock = new Map<string, number>(); //Map 객체 생성 
stock.set('g001', 1);
stock.set('g002', 2);
console.log(stock.get('g001'));
console.log(stock.get('g002'));
  • Map은 키(key)로는 문자열(string), 값(value)으로는 숫자(number)를 가지는 자료구조, 자바스크립트에서 제공하는 특별한 객체
  • stock.set('g001', 1);
    : 키 'g001'에 대해 값 1을 추가

📘 Set

  • 고유한 값의 집합을 나타내는 객체
  • 중복된 요소 추가 불가능, 동일한 값이 추가되면 무시
  • 값이 삽입된 순서를 기억
  • 다양한 타입 저장 가능
  • 빠른 조회 가능
  • 타입을 지정하지 않으면 Set 안에 숫자, 문자열 등 다양한 타입의 값을 모두 포함할 수 있음
  • 배열과 비슷하지만 수학에서 집합에 해당하는 자료구조
const mySet =  new Set<number>(); // 타입을 생성자에서 지정

// 값 추가
mySet.add(1);
mySet.add(2);
mySet.add(3);
mySet.add(2); // 중복이므로 무시됨

console.log(mySet); // Set(3) { 1, 2, 3 }

// 값 조회
console.log(mySet.has(2)); // true
console.log(mySet.has(4)); // false

// 값 삭제
mySet.delete(2);
console.log(mySet); // Set(2) { 1, 3 }

// Set의 크기
console.log(mySet.size); // 2

// Set 순회
mySet.forEach(value => {
    console.log(value); // 1, 3
});
  • 타입 지정 안 하는 경우
    : Set 안에 숫자, 문자열 등 다양한 타입의 값을 모두 포함
const mixedSet = new Set();

mixedSet.add(1);          // 숫자
mixedSet.add("hello");   // 문자열
mixedSet.add(true);      // 불리언
mixedSet.add({ key: "value" }); // 객체

console.log(mixedSet); // Set(4) { 1, "hello", true, { key: "value" } }
profile
배운 내용 정리하기 위해 쓰는 블로그

0개의 댓글