📘 제네릭(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" } }