Skip to content

Traduccion del archivo src/rewards/index.js a TypeScript#53

Open
Migueldsc12 wants to merge 4 commits intoUSB-CI3715:f24from
Migueldsc12:convertir-index.js-a-ts
Open

Traduccion del archivo src/rewards/index.js a TypeScript#53
Migueldsc12 wants to merge 4 commits intoUSB-CI3715:f24from
Migueldsc12:convertir-index.js-a-ts

Conversation

@Migueldsc12
Copy link

@Migueldsc12 Migueldsc12 commented Oct 14, 2024

Traduccion del archivo src/rewards/index.js a TypeScript

Miguel Salomon (19-10274)

Idea principal

La idea principal de este pull request es convertir el archivo index.js a en un archivo TypeScript, generando asi index.ts en la misma ubicacion.

Proceso

Se analizo el archivo original index.js para identificar las funciones clave y las estructuras de datos implicadas.

Se reviso las dependencias e importaciones para asegurar su compatibilidad con TypeScript.

Identifiqué y prioricé las áreas donde la falta de tipos explícitos podría haber llevado a posibles errores o falta de claridad.

Creación del nuevo archivo:

Generé index.ts en el mismo directorio que el archivo original.

Definición de tipos:

Definí las interfaces Reward, RewardData, Params y DbObject, aclarando la estructura de los objetos
utilizados en el módulo.

Tipé correctamente los parámetros y valores de retorno de las funciones asíncronas, evitando el uso excesivo de any.

Usé Promise para las funciones que no retornan valores explícitos pero que realizan acciones asíncronas.

Tipé correctamente las interacciones con la base de datos (resultados de db.getObjects, db.isSetMember, etc.) para evitar la manipulación de tipos desconocidos.

Actualicé las importaciones y exportaciones al formato de módulos de ES6.

Modifiqué las funciones para que utilicen tipos explícitos, eliminando el uso de any en la medida de lo posible.

Manejo de tipos any:

En los casos donde fue necesario, utilicé tipos más específicos o unknown en lugar de any para mayor
seguridad. Esto asegura que el código sea más robusto y menos propenso a errores durante la ejecución.

Gestión de errores del compilador:

Ataque errores reportados por el compilador de TypeScript realizando ajustes en el código. Esto incluyó la
tipificación adecuada de variables, parámetros y retornos de funciones asíncronas.

En casos donde las dependencias externas (como db y plugins) aún no estaban completamente tipificadas, utilicé anotaciones como // @typescript-eslint/no-unsafe-member-access y @typescript-eslint/no-unsafe-call para suprimir advertencias y errores sin perder el control de los tipos dentro del código.

Gestión de promesas:

Aseguré que todas las promesas en el código estuvieran correctamente manejadas con async/await o utilizando bloques .then().catch() en las pruebas para evitar errores por promesas rechazadas que no eran manejadas, lo que podría generar timeouts en las pruebas.

Cambios Adicionales:

Implementé la captura de errores usando bloques try/catch en las funciones clave que interactúan con la
base de datos y los plugins, para mejorar la resiliencia del código.

Pruebas:

Utilizamos el comando npx tsc para compilar el codigo y generar el archivo JavaScript equivalente a esta conversion.

Realizamos el test de eslint con el comando npm run lint para verificar errores de estilos y sintaxis.

Realizamos el test de pruebas con el comando npm run test, el cual encontro errores con el manejo de las promesas: Error: Timeout of 25000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. Luego de bastante investigacion, no pude dar con una solucion ya que al parecer es un error con el manejo de los test y las promesas.

Finalmente

Este proceso ha permitido que el archivo index.ts sea más legible, seguro y fácil de mantener, manteniendo la funcionalidad original.

Se soluciona el issue #2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant