簡體   English   中英

需要在 javascript 中導出 typescript 類

[英]require exported typescript class in javascript

我正在將我的 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。

正如@crashmstr 提到的,您應該創建一個RedisRepository的新實例,然后調用getDevice方法。 如果您還想使用

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM