"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 불변 데이터 구조: ECMA 4의 레코드 및 튜플

불변 데이터 구조: ECMA 4의 레코드 및 튜플

2024-11-08에 게시됨
검색:439

Immutable Data Structures: Records and Tuples in ECMA 4

불변 데이터 구조: ECMAScript 2024의 새로운 기능

ECMAScript 2024에는 몇 가지 흥미로운 업데이트가 도입되었습니다. 하지만 제가 눈에 띄는 기능 중 하나는 불변 데이터 구조의 도입입니다. 이러한 새로운 구조(레코드 및 튜플)는 JavaScript에서 데이터 관리를 위한 판도를 바꾸는 요소입니다. 이는 데이터를 건전하고 안전하며 일관되게 유지하는 만족스러운 방법을 제공합니다. 이는 쉽게 유지 관리할 수 있는 안정적인 애플리케이션을 원할 때 가장 중요합니다. 불변 데이터 구조가 흥미로운 이유와 이를 가장 효과적으로 사용할 수 있는 방법은 다음과 같습니다.

레코드와 튜플이란 무엇입니까?

레코드와 튜플은 설계상 변경할 수 없는 새로운 데이터 구조입니다. 즉, 레코드나 튜플을 생성하면 해당 내용을 변경할 수 없습니다. 이를 수정하려고 시도하면 새 인스턴스가 생성되지만 원본은 변경되지 않습니다. 이러한 불변성은 의도하지 않은 부작용을 방지하고 코드를 더욱 예측 가능하게 만드는 데 도움이 됩니다.

불변 데이터 구조를 사용하는 이유는 무엇입니까?

  • 예측 가능성: 불변 데이터 구조를 사용하면 데이터가 일단 설정되면 애플리케이션의 다른 곳에서 실수로 변경되지 않는다는 것을 알 수 있으므로 코드에 대해 더 쉽게 추론할 수 있습니다.
  • 디버깅: 불변성을 사용하면 데이터가 예기치 않게 수정되는 것과 관련된 문제를 방지하여 디버깅을 더 간단하게 만들 수 있습니다.
  • 함수형 프로그래밍: 불변 데이터는 함수가 부작용을 피하고 데이터가 불변으로 처리되는 함수형 프로그래밍 패러다임에 잘 맞습니다.

기록 생성 및 사용

레코드는 불변의 객체와 같습니다. 이는 세트 구조로 정의되며 생성 후에는 변경할 수 없습니다. 레코드 사용 방법을 간단히 살펴보겠습니다.

// Creating an immutable Record const kittyFacts = 
#{ name: "Turbodog", age: 17, favoriteToy: "Laser Pointer" }; 
// Accessing values 
console.log(kittyFacts.name); 
// Outputs: Turbodog 
console.log(kittyFacts.favoriteToy); 
// Outputs: Laser Pointer 
// Attempting to modify will create a new instance 
const updatedKittyFacts = #{ ...kittyFacts, age: 18 };
console.log(kittyFacts.age); 
// Outputs: 17 (unchanged) 
console.log(updatedKittyFacts.age); 
// Outputs: 18 (new instance)

이 예에서 kittyFacts는 변경할 수 없는 레코드입니다. 연령 업데이트와 같은 수정 사항은 원래의 kittyFacts를 그대로 유지하면서 새로운 업데이트된KittyFacts 레코드를 생성합니다.

튜플 작업

튜플은 고정된 수의 요소를 보유할 수 있는 불변 배열입니다. 이는 변경해서는 안 되는 순서가 지정된 값 컬렉션을 나타내는 데 특히 유용합니다.

// Creating an immutable Tuple 
const concertSetlist = #[ "Tupelo", "Live Oak", "Strawberry Woman", "Elephant" ]; 
// Accessing values 
console.log(concertSetlist[0]);
 // Outputs: Tupelo 
console.log(concertSetlist[2]);
 // Outputs: Strawberry Woman 
// Attempting to modify will create a new instance
 const updatedSetlist = #[...concertSetlist, "Chaos and Clothes"]; 
console.log(concertSetlist.length); 
 // Outputs: 4 (unchanged) 
console.log(updatedSetlist.length);
// Outputs: 5 (new instance)
; // 값에 접근하기 console.log(concertSetlist[0]); // 출력: 투펠로 console.log(concertSetlist[2]); // 출력: 딸기여자 // 수정을 시도하면 새 인스턴스가 생성됩니다. constupdateSetlist = #[...concertSetlist, "혼돈과 옷"]; console.log(concertSetlist.length); // 출력: 4(변경되지 않음) console.log(updatedSetlist.length); // 출력: 5(새 인스턴스)

여기에서 ConcertSetlist는 불변의 튜플입니다. 세트리스트에 새 노래를 추가하면 원본을 유지하면서 업데이트된 새 Setlist Tuple이 생성됩니다.

레코드와 튜플을 사용한 고급 작업


레코드와 튜플에는 데이터를 불변하게 처리하는 데 유용한 방법이 제공됩니다. 예를 들어, Tuples의 with 메소드를 사용하면 특정 인덱스에서 쉽게 업데이트할 수 있습니다:

// Creating a Tuple 
const originalMixtape = #[ "If We Were Vampires", "World Leader Pretend", "Right Back to It" ];
 // Updating a specific index 
const updatedMixtape = originalMixtape.with(1, "Turn You Inside-Out"); 
console.log(originalMixtape); 
// Outputs: #[ "If We Were Vampires", "World Leader Pretend", "Right Back to It" ]; 
console.log(updatedMixtape); 
// Outputs: #[ "If We Were Vampires", "Turn You Inside-Out", "Right Back to It" ];
// 튜플 생성 const originalMixtape = #

; // 특정 인덱스 업데이트 const updateMixtape = originalMixtape.with(1, "당신을 뒤집어보세요"); console.log(originalMixtape); // 출력: #

; console.log(updatedMixtape); // 출력: #

;

이 예에서 with 메소드는 원본 Mixtape를 변경하지 않고 인덱스 1의 트랙을 업데이트합니다.

결론

변경 불가능한 데이터 구조(레코드 및 튜플)는 ECMAScript 2024에 도입되었으며 JavaScript의 주요 개선 사항을 나타냅니다. 이는 데이터 일관성을 촉진하고, 디버깅을 단순화하며, 함수형 프로그래밍 방식에 잘 부합하는 데 도움이 됩니다. 이러한 불변 구조를 실험함으로써 가변 데이터로 인한 일반적인 놀라움과 부작용을 피하면서 보다 안정적이고 유지 관리가 쉬운 애플리케이션을 만들 수 있습니다.

출처:

https://www.interactivated.me/blog/whats-new-in-javascript-top-10-exciting-features-for-2024

https://thenewstack.io/whats-new-for-javascript-developers-in-ecmascript-2024/

https://www.w3schools.com/js/js_2024.asp

https://github.com/tc39/proposal-record-tuple

https://tc39.es/proposal-record-tuple/tuple/tutorial/Immutable Data Structures: Records and Tuples in ECMA 4

릴리스 선언문 이 기사는 https://dev.to/wendyver/immutable-data-structures-records-and-tuples-in-ecma-2024-1n39?1에 복제되어 있습니다. 침해가 있는 경우, [email protected]으로 문의해 주십시오. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3