需要在 javascript 中导出打字稿 class

require exported typescript class in javascript

我正在将我的 nodejs 项目从 Javascript 转移到 Typescript。这将是一个缓慢的过程,在几个月内慢慢改变,因为我需要调整一些东西。

我创建了一个打字稿 class,看起来像这样:

// RedisRepository.ts

export class RedisRepository {
  public async getDevice(serial: string) : Promise<Device> {
    // blah
    return device;
  }
}

然后在我需要引用的另一个 Javascript 文件中,然后调用上面的函数 class。

// ExpressApi.js

const repository = require('../Redis/RedisRepository');

async function getRedis(req, res) {
  try {
    const device = await repository.getDevice('serialnumberxxx');
    res.status(200).end(JSON.stringify(device ));
  } catch (e) {
    logger.error(e);
    res.status(500).end();
  }
}

但是,当它尝试调用存储库上的函数时,它说它不存在。使用 chrome 调试器,我可以看到它存在于:repository.RedisRepository.prototype.getDevice。不过,这似乎不是使用该函数的正确方法。

虽然我很感激,但我可以将 ExpressApi.js 转换为 Typescript。许多不同的文件都会遇到这个问题。所以我现在需要将它用作 JavaScript。我将慢慢地继续围绕该项目并将内容更改为 Typescript。

如@crashmstr 所述,您应该创建一个新的 RedisRepository 实例,然后调用 getDevice 方法。 如果你还想用

const repository = require('../Redis/RedisRepository');

语法,您可以从 RedisRepository.ts 文件中 export default new RedisRepository()