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

574
Visualizações
Cómo incluir una declaración de tipo de archivo global en un paquete TypeScript (Node.js)

Estoy trabajando en un paquete que planeo publicar públicamente en npmjs. Llamémoslo el "paquete de texto".

Me gustaría que, de manera predeterminada, al instalar ese paquete, pueda importar archivos .txt directamente y obtener el tipo correcto (listo para usar), así:

 import text from './file.txt'

La variable de text sería de tipo string porque el paquete habría definido su tipo, usando algo como esto (en un global.d.ts):

 declare module '*.txt' { export const text: string; export default text; }

Si incluyo ese global.d.ts en mi paquete e importo algo de este paquete, automáticamente obtendré el tipo correcto al importar un archivo .txt .

Pero el problema es que a veces solo necesito importar un archivo .txt sin importar nada del "paquete de texto", razón por la cual me preguntaba si hay alguna forma, al instalar un paquete para instalar un tipo global que no requiere importar nada más para que se aplique el tipo.

En otras palabras, tan pronto como instale mi "paquete txt", el declare module '*.txt' se aplicará a todo mi proyecto de forma inmediata.

¿Hay alguna manera de hacer esto, o quien instale mi paquete tendría que declarar su propio tipo global (por ejemplo, declaraciones.d.ts) para poder importar archivos .txt globalmente?

Sé que incluso si el tipo de importación funciona, aún requerirá Webpack u otro paquete para que realmente funcione, pero esta pregunta es solo sobre el tipo.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

La respuesta corta es:

TypeScript no admite tipos globales sin importar el archivo que hace referencia al tipo.

Más detalles:

Un ejemplo que encontré haciendo esto fue Next.js: al crear una aplicación TypeScript usando npx create-next-app@latest --typescript , puede comenzar a importar archivos *.css (por ejemplo) y obtener el tipo correcto.

Donde me confundí es que originalmente pensé que el tipo provenía de next-env.d.ts pero incluso cuando eliminé el archivo, la importación *.css todavía funcionaba en el código de Visual Studio. Pero la razón fue porque un archivo en el directorio de pages estaba importando el archivo index.d.ts de index.d.ts

Básicamente, en Visual Studio Code, tan pronto como importe un tipo en algún lugar de su proyecto, si es global, será accesible en todas partes.

Solución alterna

Entonces, ¿qué se puede hacer con las capacidades actuales de TypeScript? Para admitir nuevos tipos de archivos, necesitará un cargador de archivos como Webpack. Lo lógico sería agregar una referencia a la declaración del tipo de archivo en el propio cargador de archivos. De esta manera, tan pronto como configure su cargador de archivos para poder importar el archivo, heredará el tipo:

  1. cree un txt.d.ts en el directorio fuente de nuestro paquete (por ejemplo, src ); puede usar cualquier nombre para el archivo, no es importante
  2. si está utilizando eslint, agregue una entrada para ignorar el tipo de archivo (por ejemplo 'src/*.d.ts' en su opción ignorePatterns
  3. Dado que está agregando un archivo d.ts en su fuente que no está administrado por tsc , debe agregar una secuencia de comandos que realizará las siguientes acciones:
    1. Copie txt.d.ts en el directorio de destino de los archivos compilados para su paquete
    2. Agregue esta línea en la parte superior del cargador de archivos de su paquete (por ejemplo loader/index.d.ts : /// <reference types="../txt" />\r\n - esto vinculará el archivo de declaración nuevamente a su paquete Tenga en cuenta que puede agregar esta referencia a cualquier archivo de su paquete.

Esta solución solo funcionará una vez que importe el archivo que hace referencia a la declaración; esta es la única forma en que TypeScript puede saber que este tipo existe (consulte https://github.com/microsoft/TypeScript/issues/49124 ).

Otra alternativa también podría ser agregar pasos manuales (en un archivo Léame) para agregar un archivo de declaración de tipo global.

about 4 years ago · Juan Pablo Isaza Relatório

0

para agrupar tipos globales, haga lo siguiente. formulario mecanografiado

  • especifique el directorio de escritura predeterminado en typeRoots . .por ejemplo, "typeRoots": ["./src/types"] .
  • cree un archivo /src/types/global.d.ts en el directorio especificado
  • declara tus tipos en el archivo dentro de declare global {} y asegúrate de export {} si aún no exportas nada.
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