需要在javascript中导出Typescript类

时间:2019-12-13 12:46:13

标签: javascript node.js typescript requirejs

我正在将我的nodejs项目从Javascript移到Typescript。这将是一个缓慢的过程,随着我需要进行调整,需要几个月的时间来慢慢地改变事物。

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

// RedisRepository.ts

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

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

// 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。

1 个答案:

答案 0 :(得分:1)

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

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

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