[javascript] Immutable.js에서 제공하는 주요 자료구조는 무엇인가요?
  1. List: Immutable 배열로, 원본 배열을 수정하지 않고 새로운 배열을 생성하며, 일반 배열과 동일한 메서드를 제공합니다. 예를 들어, .push(), .pop(), .splice() 등의 메서드를 사용할 수 있습니다.
const { List } = require('immutable');

const myArray = List([1, 2, 3]);
const newArray = myArray.push(4);

console.log(myArray); // List [1, 2, 3]
console.log(newArray); // List [1, 2, 3, 4]
  1. Map: Immutable 객체로, 키-값 쌍을 저장하는 컨테이너입니다. 키와 값을 추가, 수정, 삭제할 수 있으며, .get(), .set(), .delete() 등의 메서드를 사용할 수 있습니다.
const { Map } = require('immutable');

const myMap = Map({ name: 'John', age: 25 });
const newMap = myMap.set('age', 26);

console.log(myMap); // Map { "name": "John", "age": 25 }
console.log(newMap); // Map { "name": "John", "age": 26 }
  1. Set: 중복되지 않는 값을 저장하는 컨테이너로, 배열과 유사한 메서드를 제공합니다. .add(), .delete(), .has() 등의 메서드를 사용할 수 있습니다.
const { Set } = require('immutable');

const mySet = Set([1, 2, 3]);
const newSet = mySet.add(4);

console.log(mySet); // Set [1, 2, 3]
console.log(newSet); // Set [1, 2, 3, 4]
  1. Record: Immutable한 객체를 생성하기 위한 팩토리 함수로, 자체적으로 고정된 구조를 가집니다. 사용자 지정 필드와 초기값을 정의하여 객체를 생성할 수 있습니다.
const { Record } = require('immutable');

const Person = Record({ name: '', age: 0 });
const john = Person({ name: 'John', age: 25 });

console.log(john.get('name')); // "John"
console.log(john.get('age')); // 25

Immutable.js에서 제공하는 이러한 자료구조는 자바스크립트에서 불변성을 유지하면서 데이터를 다루는 데 매우 유용합니다.