Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

187
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda