¿Qué hace typescript?
Guía de estilo y seguridad de tipos de LobeHub para TypeScript. Úsala al editar archivos TS/TSX/MTS, corregir tipos, elegir entre interface y type, evitar any/object, import type, flujo asíncrono o ts-expect-error.
Principios Generales
- Prefiere
interfacesobretypepara definiciones de objetos que puedan ser extendidas o implementadas. Usatypesolo para uniones, intersecciones, tipos condicionales o alias de tipos primitivos. - Evita
anyyobject: Usa tipos específicos ounknownsi el tipo es desconocido.anydesactiva la verificación de tipos. - Usa
import typepara importaciones que solo se usan como tipos. Esto evita que el import se incluya en el JavaScript generado. - Manejo de flujo asíncrono: Prefiere
async/awaitsobre promesas encadenadas. Maneja errores contry/catch. ts-expect-error: Úsalo solo como último recurso y con un comentario explicativo. Prefiere refactorizar el código para eliminar el error de tipo.
Ejemplos
// Bien: usar interface para objetos
interface Usuario {
nombre: string;
edad: number;
}
// Bien: usar type para uniones
type Resultado = "éxito" | "error";
// Mal: usar any
function procesar(dato: any): any { /* ... */ }
// Bien: usar unknown si el tipo es desconocido
function procesar(dato: unknown): string {
if (typeof dato === "string") {
return dato.toUpperCase();
}
return "desconocido";
}
// Bien: import type
import type { Usuario } from "./modelos";
// Bien: async/await
async function obtenerUsuario(id: number): Promise<Usuario> {
try {
const respuesta = await fetch(`/api/usuarios/${id}`);
if (!respuesta.ok) throw new Error("Error al obtener usuario");
return await respuesta.json();
} catch (error) {
console.error(error);
throw error;
}
}