我正在将我的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。
答案 0 :(得分:1)
如@crashmstr所述,您应该创建RedisRepository
的新实例,然后调用getDevice
方法。
如果您仍然想使用
const repository = require('../Redis/RedisRepository');
语法,您可以从export default new RedisRepository()
文件中RedisRepository.ts
。