🔎
Más
Especiales
Filtros
Dev hace 2 h

Parse, Don't Validate – In a Language That Doesn't Want You To

Parse, Don't Validate – In a Language That Doesn't Want You To

El enfoque de "parsear en lugar de validar" se refiere a la práctica de analizar y convertir datos en un formato más preciso en lugar de simplemente verificar si cumplen con ciertos criterios. Esto permite preservar la información aprendida durante el proceso de análisis y evitar la necesidad de volver a verificar los datos en etapas posteriores del programa.

En lenguajes de programación como Haskell, Elm o F#, este enfoque es común y está integrado en la forma en que se escriben los programas. Sin embargo, en TypeScript, no es tan sencillo debido a su sistema de tipado estructural, que considera que dos tipos con la misma forma son equivalentes. Esto significa que un tipo personalizado como "EmailAddress" no es inherentemente distinto de un tipo "string" estándar.

“Sin embargo, en TypeScript, no es tan sencillo debido a su sistema de tipado estructural, que considera que dos tipos con la misma forma son equivalentes”

Para superar esta limitación en TypeScript, se puede utilizar una técnica llamada "branding" o "tipado nominal mediante intersección". Esta técnica implica agregar un marcador de tipo, como un símbolo único o una cadena literal, a un tipo existente para hacerlo distinto. Por ejemplo, se puede crear un tipo "Email" que sea una intersección de "string" y un objeto que contenga un símbolo único llamado "EmailBrand". De esta manera, aunque el tipo "Email" sigue siendo un "string" en tiempo de ejecución, el sistema de tipado de TypeScript lo trata como un tipo distinto.

La ventaja de este enfoque es que permite al programa garantizar que los datos han sido validados y convertidos en un formato preciso sin necesidad de volver a verificarlos en cada etapa. Esto no solo mejora la seguridad y la precisión del programa, sino que también reduce la necesidad de código defensivo y validaciones repetidas, lo que a su vez puede mejorar la legibilidad y el mantenimiento del código. En resumen, aunque TypeScript no facilita naturalmente el enfoque de "parsear en lugar de validar" como algunos otros lenguajes, hay técnicas disponibles para lograr este objetivo y mejorar la robustez y la claridad del código.