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

627
Vistas
Definiciones de tipos de TypeScript: cómo declarar constructores de clases

Tengo una biblioteca JavaScript casera (un archivo js) que contiene varias clases. Para usarlo en mis proyectos de TypeScript, he creado un archivo d.ts que contiene definiciones de tipo para todas esas clases. Una definición típica se vería así:

 export interface ClassExample { new(param: boolean): ClassExample; propertyName: number|string; log(...args: any[]): void; }

Y funciona bien. Pero estoy siendo golpeado por la regla de linter @typescript-eslint/no-misused-new : "No se pueden construir interfaces, solo clases". Por supuesto, puedo configurar mi linter y/o agregar excepciones para el archivo d.ts en particular, pero esto me hace contemplar si debería haber algún otro enfoque para describir mis clases. ¿Debería usarse una declaración abstract class en su lugar? Traté de buscar cómo se declaran los constructores de clase para los módulos Node.js disponibles públicamente y encontré este código en el archivo @types/node/console.d.ts :

 interface ConsoleConstructor { prototype: Console; new(stdout: WritableStream, stderr?: WritableStream, ignoreErrors?: boolean): Console; new(options: ConsoleConstructorOptions): Console; }

Entonces, supongo que declarar constructores de clases en la interfaz no es un pecado grave, si los autores de Node.js lo están practicando.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

De acuerdo con el manual , declararías esa clase con la palabra clave declare , así:

 declare class ClassExample { constructor(param: boolean); propertyName: number|string; log(...args: any[]): void; }

Aquí está la sección vinculada anteriormente tal como aparece cuando se escribió esta respuesta (mi énfasis) :

Clases

Documentación

Puede crear un greeter creando una instancia del objeto Greeter o crear un greeter personalizado al ampliarlo.

Código

 const myGreeter = new Greeter("hello, world"); myGreeter.greeting = "howdy"; myGreeter.showGreeting(); class SpecialGreeter extends Greeter { constructor() { super("Very special greetings"); } }

Declaración

Use declare class para describir una class o class objeto similar a una clase. Las clases pueden tener propiedades y métodos, así como un constructor .

 declare class Greeter { constructor(greeting: string); greeting: string; showGreeting(): void; }
over 4 years ago · Santiago Trujillo 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