<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Henry</title>
    <description>The latest articles on DEV Community by Henry (@korderoman).</description>
    <link>https://dev.to/korderoman</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F992489%2F62ed0d15-b338-4c03-aff9-6c626456f618.jpeg</url>
      <title>DEV Community: Henry</title>
      <link>https://dev.to/korderoman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/korderoman"/>
    <language>en</language>
    <item>
      <title>El uso del Null y Undefined en la definición y envío de data (Angular - TypeScript)</title>
      <dc:creator>Henry</dc:creator>
      <pubDate>Mon, 19 Dec 2022 14:26:52 +0000</pubDate>
      <link>https://dev.to/korderoman/el-uso-del-null-y-undefined-en-la-definicion-y-envio-de-data-angular-typescript-1bm6</link>
      <guid>https://dev.to/korderoman/el-uso-del-null-y-undefined-en-la-definicion-y-envio-de-data-angular-typescript-1bm6</guid>
      <description>&lt;p&gt;Regularmente cuando desarrollamos aplicaciones que reciben y envían data al backend, tenemos al menos un proceso en el cuál preparamos la data para su parseo hacia un formulario o template o su envío al backend.&lt;br&gt;
Soy &lt;strong&gt;consciente&lt;/strong&gt; que esta propuesta en cierta forma es debatible, por lo cuál resulta una suerte de opinión sobre el tratamiento de la información, para colocarnos en contexto debemos de tener en cuenta las definiciones del null y undefined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Null - definición&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;El Valor null es un literal de Javascript que representa intencionalmente un valor nulo o "vacío". (&lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators/null" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Undefined - definición&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Una variable a la que no se le ha asignado valor, o no se ha declarado en absoluto (no se declara, no existe) ... (&lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/undefined" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Con ambas definiciones en cuenta podemos decir en resumen qué, aunque en la práctica indiquen la ausencia de valor, null agrega un sentido de intencionalidad la ausencia de dicho valor; esto resulta útil, en el control del código que realizamos en el sentido de ser conscientes de lo que envíamos&lt;/p&gt;

&lt;p&gt;Ahora bien supongamos que tenemos el siguiente método &lt;strong&gt;senData&lt;/strong&gt; que se recibe como argumento el &lt;strong&gt;form.value&lt;/strong&gt; de un formulario reactivo en Angular que envía los datos al backend a través de un servicio.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sendData(model: T): void {
   this.servicio.enviar(model).subscribe(...)
} 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El servicio recibe enteramente el objeto, tenemos una fe ciega de lo que se envía. En mi opinión resulta más saludable controlar el envío ya sea desde la  inicialización o del método que prepara la data de envío; la inicialización indica el momento en el que en un formulario se define e inicializa el formControl&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;z:FormControl = new FormControl(null)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O del método preparativo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;senData(model:T):void {
 const dataToSend: T = {
     a:model.a ?? null,
     b: +(model.b ?? null),
}

this.servicio.enviar(dataToSend).subscribe(...)

}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Y es que este ejercicio trae un trasfondo, al ser conscientes de la data que deseamos enviar también realizamos los parseos adecuados de la data.&lt;/p&gt;

&lt;p&gt;Y en definitiva, también puede resultar en que decantes en que el diseño de las propiedades del objeto que envías no sea el más adeacuado, ¿Por qué enviar elementos que el backend no requiere?, ¿O cómo tratamos los datos sensibles?, y ahí es donde evolucionamos hacia los DTO's (próximo post)&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
  </channel>
</rss>
