Búsqueda de sitios web

node.js - Usar clase de JavaScript en TypeScript


Tengo un problema al introducir TypeScript en nuestro proyecto de JavaScript. Primero quiero usar TypeScript solo en mi parte del código, dejando el JavaScript sin cambios.

Ahora intento usar una clase de JavaScript en mi código TypeScript, pero no he encontrado una solución en los últimos días.

La cabecera de mi clase TypeScript con importación de JavaScript:

import { BaseLogic } from "../baseLogic";
export class ClaimLogic extends BaseLogic {
...

La clase de JavaScript ("baseLogic.js"):

module.exports = class BaseLogic {
    constructor(meta, logger) {
    ...

Mi archivo *.d.ts ("baseLogic.d.ts"):

export class BaseLogic {
    meta: any;
    log: any;

    constructor(meta: any, logger: any)
}

La cabecera del JavaScript compilado:

const baseLogic_1 = require("../baseLogic");
class ClaimLogic extends baseLogic_1.BaseLogic {
...

Como se puede ver en el JavaScript compilado, se utiliza baseLogic_1.BaseLogic. Esto da como resultado el siguiente error:

TypeError: Class extends value undefined is not a constructor or null

Con solo baseLogic_1 después de la palabra clave extends en el archivo de JavaScript, todo está bien.

¡No tengo idea de una solución y espero que puedas ayudarme!

Respuesta #1

Tu importación debería ser import * as BaseLogic from "../baseLogic";.

De esa manera obtendrás la Clase que pusiste en module.exports.

Respuesta #2

El fragmento de código en baseLogic.js exporta la clase.

module.exports = class BaseLogic {
  constructor(meta, logger) {
  ...
}

Intentas acceder con class ClaimLogic extends baseLogic_1.BaseLogic a un objeto que incluye la clase BaseLogic

Solución

import BaseLogic from '../baseLogic'
// or:  const BaseLogic = require("../baseLogic");

class ClaimLogic extends BaseLogic {
  ...
}

Artículos relacionados