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

1.3K
Visualizações
Archivos de declaración personalizados de TypeScript para módulos npm sin tipo

Estoy consumiendo un componente React llamado shiitake de npm en mi proyecto donde uso TypeScript. Esa biblioteca no tiene declaraciones de TypeScript, así que pensé en escribir una. El archivo de declaración se ve a continuación (puede que no esté completo, pero no se preocupe demasiado):

 import * as React from 'react'; declare module 'shiitake' { export interface ShiitakeProps { lines: number; } export default class Shiitake extends React.Component<ShiitakeProps, any> { } }

He puesto esto dentro del archivo ./typings/shiitake.d.ts y en VS Code, veo el siguiente error:

[ts] Nombre de módulo no válido en el aumento. El módulo 'shiitake' se resuelve en un módulo sin tipo en 'd:/dev/foo/foobar.foo.Client.Web/node_modules/shiitake/dist/index.js', que no se puede aumentar.

En el lado del consumo, sigo recibiendo el mismo error incluso con la declaración anterior (ya que no tengo activado el interruptor del compilador noImplicitAny ):

 /// <reference path="../../../../typings/shiitake.d.ts" /> import * as React from 'react'; import Shiitake from 'shiitake';

[ts] No se pudo encontrar un archivo de declaración para el módulo 'shiitake'. 'd:/dev/foo/foobar.foo.Client.Web/node_modules/shiitake/dist/index.js' implícitamente tiene un tipo 'cualquiera'.

El por qué estándar de adquirir archivos de declaración para este tipo de módulos es a través de @types/ way y funciona bien. Sin embargo, no puedo hacer que funcionen los tipos personalizados. ¿Alguna idea?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

La declaración declare module 'shiitake'; debe tener un alcance global. es decir, una declaración de nivel superior en un no módulo (donde un módulo es un archivo con al menos una import o export de nivel superior).

Una declaración de la forma declare module '...' { } en un módulo es un aumento. Para obtener más detalles, consulte Aumento del módulo de mecanografiado .

Así que quieres que este archivo se vea así:

 declare module 'shiitake' { import * as React from 'react'; export interface ShiitakeProps { lines: number; } export default class Shiitake extends React.Component<ShiitakeProps, any> { } }
over 4 years ago · Santiago Trujillo Relatório

0

En mi experiencia, un archivo de definición fallará de esta manera si tiene exportaciones o importaciones declaradas fuera de la definición del módulo. Si usa un IDE con importación automática, ¡tenga cuidado!

over 4 years ago · Santiago Trujillo Relatório

0

Tuve el mismo problema hoy.

Resulta que pego las interfaces exportadas fuera de la declaración del módulo. El archivo de escritura que usé como plantilla tenía interfaces privadas al final del archivo.

Entonces, mis interfaces exportadas se declararon fuera de la declaración del módulo. Esto es lo que vuelve loco al compilador de TypeScript.

Una vez que moví las interfaces a los límites del módulo, todo se arregló.

over 4 years ago · Santiago Trujillo 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