JavaScriptの記録とタプル


フォア・ホラ!エヌエストポストHablare Sobre Las Nuevas Caracterは、Presas que serを紹介します.特別なsobreロスnuevos tiposデdatos「記録とタプル」propuesto エヌEl EcmasScript Porロビンricard yリックボタン、en estos momentos se encuentranエヌラ(2021 - 01 - 01)罪禁輸pron cambiara.ESTA機能は、Agregar Dos Tiposデvalores Primitivos al Lenguajeを含みます:
  • 記録(同様に国連objeto).
  • tuplas ( unarrayと同様).

  • 構文
    ラSintaxisは、同様にロスconocidos arreglos y objetosコンna sutil diferencia、una almohadilla o signoデハッシュ(Chenhn)アルcomienzoです.
    const person = #{
      name: "Brian",
      lastName: "Santeliz"
    }
    
    const lenguages = #["Javascript", "Python", "Haskell", "Rust"]
    

    カラコンは
    デPrincipioなしparece灘特別な、罪は禁欲的なtiene cosas muy interesantes.ラ・カークテーター・デ・ラス・カークテーター・エストラス・ヌエヴォス・ティポ・デ・データスの物語

    変異
    Edos Nuevos TiposデDatos息子inmutables、類似したoobject.freeze() カムビールの詩的記録をめぐってo o frameworks que usan el Principioデla inmutabilidad como反応としてのEsto Puede Ser muy delは、反応します.そして、アデウムCero immutablejsパラReizizar Estas operaciones .
    const person = #{
      name: "Brian",
      lastName: "Santeliz"
    }
    person.age = "20" // Error
    const lenguages = #["Javascript", "Python", "Haskell", "Rust"]
    lenguages[0] = "Php" // Error
    
    エトスは、datos pueden anidarseを記録します.
    const hero = #{
      name: "Iron Man",
      movies: #["Avengers", "Civil War", "Avengers: End Game"]
    }
    const lenguages = # ["Python", "Php", #{name:"JavaScript", creator:"Brendan Eich"}]
    

    イグアナ
    Narth de Las Caracter Les M ' s s Me Me guus an estoy Seguro que Otros desarrolladores Tambi et n , es a Capacidad de poder compare record y tuples por su valor y no por su referenciaVEMAOS非EJPLOMO
    const obj = {name:"Hello"};
    const obj2 = {name:"Hello"};
    
    obj === obj2 //false
    
    Aunque Estoy Comparado Das Oobjetos que Son iguales ( I . L . Nunobre ) la比較法Nuna soluci n n para esto seria , usando el m et todo deJSON.stringify() .
    const obj = {name:"Hello"};
    const obj2 = {name:"Hello"};
    
    JSON.stringify(obj) === JSON.stringify(obj2) 
    //true
    
    Sindo Tenene Algunos問題についてLaブエナNoticia es que詐欺記録とTuplesなしes必需品ya que estos比較者パパエルValor y no por su referencia.
    const obj = #{name:"Hello"};
    const obj2 = #{name:"Hello"};
    
    obj === obj2 //true
    
    const colors = #["red","black","green", "blue"]
    
    colors === #["red","black","green", "blue"]
      //true
    
    天才!インクルュースコンレコーズ/タプルアニダドス.
    const lenguages = #[ "Php", #{name:"JavaScript", creator:"Brendan Eich"}]
    lenguages === #["Php", #{name:"JavaScript", creator:"Brendan Eich"}] 
    //true
    
    コモMencione Triiororte Los Records y Tuples息子Datos PirmitivosエヌJavascript、Estse SE Puede Comproperususla La Senenciaデtypeof .
     typeof #{a: 2, y: 3}
    // "record"
    typeof #[4,5,4]
    //"tuple"
    

    コンステビリド詐欺プロピード
    Podoros InvurzarロスMは、ya conconemos tanto para arreglo como para objetosをtodosします.破壊、スプレッド&レスト演算子、高次関数.
    const hero = #{
    name:"Iron Man ",
    creator:"Marvel",
    power:"1200"
    }
    //Destructuring & Rest operator.
    const {name:newName, ...others} = hero;
    console.log(others)
    //{creator: "Marvel", power: "1200"}
    const age = 34
    const newHero = #{
    ...others, //syntax spread
    age, //short notation
    name:"Cap America"
    };
    
    const colors = #["yellow", "blue", "red"];
    //filter method
    const redColor = colors.filter((color)=>color === "red");
    console.log(redColor)
    //#["red"]
    

    トドソン・JSONについて
    アルゴque干し草que tenerエヌcuenta es queJSON.stringify() Trataロスレコードcomo objetos y las tuples como array de manera recursivaエルメトドJSON.parseImmutable() コココナJSON.parse() Lugar de objetos y tuples en lugde de array nuevamente de manera recursiva
    const recordExample = JSON.parseImmutable('{"x":"Hello","y":["Banana","Apple"]}');
    console.log(recordExample);
    // #{x: "Hello", y: #["Banana", "Apple"]}
    
    const objExample = JSON.stringify(recordExample);
    console.log(objExample);
    // "{x: "Hello", y: ["Banana", "Apple"]}"
    

    思いやり
    Edos Nuevos Tipos de Datos Tienen ciertas que Defincione que Deegemos tener en cuenta , alguna de ella son :
  • レコード
  • ラスキーデレンサーストリング.
  • ロスバレスレスデレンサープリミティブ.
  • タプル
  • Los Elementtos Degener Per Premitivos (無記名のPondemos Infunir Funciones Por EJPLOMO )
  • アルゴデエステErresエヌcは、digoセリアンのSigienentesを得ます:
    
    //Error, no se pueden tener objetos.
    const errorRecordObj = #{
      obj: {
        a: "i'm an object"
      },
    };
    
    //Error, no se pueden tener funciones.
    const errorRecordFunction = #{
      example: () => alert("Hello World!")
    };
    
    //Ningún otro dato que no se un primitivo.
    const errorRecordDate = #{
      date: new Date(),
    };
    
    const errorRecordClass = #{
      class: new Car(),
    };
    
    const errorTupleClass = #[new Car()];
    
    const errorRecordSymbol = #{ [Symbol()]: #{} }; 
    

    結論
    パラFinalizar EstoポストQueero Hablarteデロスプロs yコントラque pude traer la nueva sintaxis、AunqueエヌRealidad息子M .
  • Ventajas : La Nueva sintaxis es precisaEl F Care Do Recordar y No Tiene Mucha diferencia cons los objetos y arreglo , adem des s la la tataas de compare .
  • Desventaja : Ne Desventaja Pen que El USO de el Car - to - cter Alfanum Les Ro , Cheno de Roco , Sintaxis si no se USA la la a a a a a a a a a a la a a a a a a a a a a a la a a a a a a a a a a a la a a a a a a a a a a a a la a a a a a a a a a a a a la a a a a a a a a a a a a la a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a aエタSintaxisタンビは、escampos privados de clases .
  • ESO Es Todo Lo que Scaleは比較したものであるプエベイリアルPlayground クリードporリックボタンy ver .MuchasグラシアスPor leer ;;

    リファレンス
  • https://exploringjs.com/deep-js/ch_shared-mutable-state.html
  • https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Classes/Private_class_fields
  • https://2ality.com/2020/05/records-tuples-first-look.html#restrictions-of-what-can-be-inside-records-and-tuples
  • https://github.com/tc39/proposal-record-tuple
  • https://rickbutton.github.io/record-tuple-playground/