Cómo trabajar con bibliotecas de terceros sin tipos
Utilice paquetes @types y escriba declaraciones manuales.
Cómo trabajar con bibliotecas de terceros sin tipos es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 4 lecciones en total.
El problema: faltan tipos
Algunos paquetes de npm no incluyen declaraciones de TypeScript ni tienen un paquete @types/. De forma predeterminada, TypeScript los trata como any, lo que elimina la seguridad de tipos en ese límite.
import legacyLib from "untyped-lib"; // legacyLib: anyPaquetes @types
El proyecto DefinitelyTyped proporciona declaraciones de tipos mantenidas por la comunidad para miles de bibliotecas. Busque en npm @types/library-name.
npm install --save-dev @types/lodash
npm install --save-dev @types/express
# Now lodash and express have full TypeScript typesEscribir un archivo de declaraciones (.d.ts)
Si no existe ningún paquete @types, escriba un archivo de declaraciones mínimo en el proyecto para declarar el módulo y sus tipos.
// src/types/untyped-lib.d.ts
declare module "untyped-lib" {
export function doSomething(x: string): number;
export const version: string;
}Ampliación de módulos
Amplíe los tipos de terceros existentes añadiendo sus propias declaraciones a un módulo existente sin bifurcarlo.
// Extend Express Request with a custom property
declare namespace Express {
interface Request {
user?: AuthUser;
}
}Declaraciones de módulos comodín
Para categorías completas de importaciones sin tipos, como archivos de recursos, utilice declaraciones de módulos comodín.
// src/types/assets.d.ts
declare module "*.svg" {
const content: string;
export default content;
}
declare module "*.json" {
const value: Record<string, unknown>;
export default value;
}noImplicitAny y bibliotecas sin tipos
Con noImplicitAny: true, importar un módulo sin tipos provoca un error de compilación. Utilice un archivo de declaraciones o deshabilite noImplicitAny por archivo con // @ts-ignore.
// Quick fix for a single untyped import:
// @ts-ignore
import untypedLib from "untyped-lib";Contribuir a DefinitelyTyped
Si escribe tipos de alta calidad para una biblioteca sin tipos, envíelos a DefinitelyTyped para ayudar a la comunidad.
# Fork DefinitelyTyped and add:
# types/your-library/index.d.ts
# types/your-library/package.json
# Submit a PR at github.com/DefinitelyTyped/DefinitelyTypedUsar any como último recurso
Cuando no pueda obtener los tipos rápidamente, utilice any explícito y añada un comentario para realizar un seguimiento de la deuda. Es mejor que el any implícito porque es intencionado y visible.
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const lib: any = require("untyped-lib"); // TODO: add typesskipLibCheck para errores de declaraciones
Si un archivo .d.ts de terceros contiene errores internos, skipLibCheck: true los silencia sin afectar a la comprobación de tipos propia.
{
"compilerOptions": {
"skipLibCheck": true
}
}Envoltorios de tipos para bibliotecas inseguras
Escriba un módulo envoltorio con tipos alrededor de una biblioteca sin tipos para contener el any y exponer una API segura y tipada al resto de la base de código.
// src/lib/safe-legacy.ts
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const raw: any = require("untyped-lib");
export function doSomething(x: string): number { return raw.doSomething(x); }Resumen: bibliotecas sin tipos
Gestione las bibliotecas sin tipos: compruebe primero los paquetes @types/, escriba archivos de declaraciones mínimos, utilice la ampliación de módulos, cree envoltorios con tipos y use skipLibCheck para los errores de declaraciones en las dependencias.
Comprobación rápida
¿Cuál es el primer lugar donde debe buscar declaraciones de tipos para un paquete de npm sin tipos?
Lo que ha aprendido
Bibliotecas sin tipos: compruebe los paquetes @types/, escriba archivos de declaraciones, amplíe los tipos existentes, utilice declaraciones de módulos comodín, envuelva las bibliotecas inseguras en fachadas con tipos y use skipLibCheck para los errores de dependencias.
Preguntas frecuentes
¿La lección «Cómo trabajar con bibliotecas de terceros sin tipos» es gratis?
Sí — el texto completo de «Cómo trabajar con bibliotecas de terceros sin tipos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Cómo trabajar con bibliotecas de terceros sin tipos»?
Utilice paquetes @types y escriba declaraciones manuales. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar TypeScript Academy?
No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Cómo trabajar con bibliotecas de terceros sin tipos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?
Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Inicio de la migración: allowJs y checkJs
- Anotaciones de tipos JSDoc como puente
- Estrategia de conversión archivo por archivo
- Cómo trabajar con bibliotecas de terceros sin tipos