ECMAScript 2024 では、いくつかのエキサイティングなアップデートが導入されていますが、私にとって際立っている機能の 1 つは、不変データ構造の導入です。これらの新しい構造であるレコードとタプルは、JavaScript でのデータ管理に大きな変革をもたらします。これらは、データの健全性、安全性、一貫性を維持するための満足のいく方法を提供します。これは、簡単に保守できる信頼性の高いアプリケーションが必要な場合に最も重要です。ここでは、不変のデータ構造が非常に興味深い理由と、それを最も効果的に使用する方法を説明します。
レコードとタプルは、設計上不変である新しいデータ構造です。これは、レコードまたはタプルを作成すると、その内容を変更できないことを意味します。これらを変更しようとすると、新しいインスタンスが作成されますが、元のインスタンスは変更されません。この不変性により、意図しない副作用が防止され、コードがより予測可能になります。
レコードは不変オブジェクトのようなものです。これらは設定された構造で定義されており、作成後に変更することはできません。 Records の使用方法を簡単に説明します:
// 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 はそのまま残り、新しい updatedKittyFacts レコードが作成されます。
タプルは、固定数の要素を保持できる不変の配列です。これらは、変更すべきでない値の順序付きコレクションを表す場合に特に便利です。
// 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(コンサートセットリスト[0]); // 出力: Tupelo console.log(コンサートセットリスト[2]); // 出力: ストロベリーウーマン // 変更しようとすると新しいインスタンスが作成されます const updatedSetlist = #[...コンサートセットリスト, "混沌と衣服"]; console.log(concertSetlist.length); // 出力: 4 (変更なし) console.log(updatedSetlist.length); // 出力: 5 (新しいインスタンス)
ここで、concertSetlist は不変のタプルです。新しい曲をセットリストに追加すると、元の曲を保持したまま、新しい更新されたセットリスト タプルが作成されます。
レコードとタプルには、データを不変に処理するための便利なメソッドが付属しています。たとえば、タプルの 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" ];// タプルの作成 constoriginalMixtape = #[「もし私たちが吸血鬼だったら」、「世界リーダーごっこ」、「すぐに戻れます」 ]; // 特定のインデックスを更新します const updatedMixtape =originalMixtape.with(1, "裏返しにします"); console.log(オリジナルミックステープ); // 出力: #
; console.log(更新されたミックステープ); // 出力: #
;結論
情報源:
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/tutorial/
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3