Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

188
Vistas
Cómo declarar tipos de TypeScript para Javascript generado

¿Cuál es la forma correcta de declarar tipos para Javascript generado que permite exponerlo desde una biblioteca? Parece que debería ser sencillo, pero hacer que el archivo .d.ts escrito a mano se use y se copie en outDir está resultando muy difícil. Actualmente, obtengo los archivos .d.ts generados por tsc en outDir , por lo que tiene tipos inferidos en lugar de los correctos.

Estructura fuente:

 src/ __generated__/ validateEvent.js <-- generated validateEvent.d.ts <-- NOT generated, but doesn't seem to work elsewhere Event.ts index.ts

validateEvent.d.ts :

 import { ValidateFunction } from "ajv"; import { Event } from "../Event.js"; export const validate: ValidateFunction<Event>; export default validate;

index.ts :

 export * from "./Event.js"; export { default as validateEvent } from "./__generated__/validateEvent.js";

tsconfig.json :

 { "compilerOptions": { "allowJs": true, "composite": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "lib": ["es2021"], "module": "es2022", "moduleResolution": "node", "outDir": "./dist", "rootDir": "./src", "skipLibCheck": true, "sourceMap": true, "strict": true, "target": "es2022", }, "include": ["src/**/*"] }

Parece que hay dos preguntas relacionadas aquí:

  1. ¿Cómo puedo copiar mi archivo .d.ts en outDir en lugar del generado a partir del Javascript generado?
  2. ¿Puedo colocar mi archivo .d.ts en otro lugar que no sea el directorio __generated__ ? (Si puedo resolver esto, tal vez el n. ° 1 sea discutible. Probé varias formas de declare module , pero nada funcionó, excepto colocar .d.ts junto a la fuente generada).

Si es importante, estoy usando módulos ES y tsc --build con referencias de proyectos. Como truco temporal, estoy copiando manualmente los archivos .d.ts a outDir , pero eso no funciona tan bien con tsc --build --watch y nodemon .

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Mi mejor respuesta hasta ahora es simplemente importar el Javascript generado con tipos generados y luego exportar una versión moldeada:

index.ts :

 export * from "./Event.js"; import { ValidateFunction } from "ajv"; import { Event } from "./Event.js"; import { default as validateEvent0 } from "./__generated__/validateEvent.js"; export const validateEvent = validateEvent0 as ValidateFunction<Event>;
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda