如何使用const将Javascript转换为Typescript导入

如何使用const将Javascript转换为Typescript导入,javascript,typescript,Javascript,Typescript,我正在尝试导入faktory(github.com/jbielick/faktory\u worker\u节点)。 自述文件建议: const faktory = require('faktory-worker'); faktory.register('ResizeImage', async ({ id, size }) => { const image = await Image.find(id); await image.resize(size); }); faktory.

我正在尝试导入faktory(github.com/jbielick/faktory\u worker\u节点)。 自述文件建议:

const faktory = require('faktory-worker');

faktory.register('ResizeImage', async ({ id, size }) => {
  const image = await Image.find(id);
  await image.resize(size);
});

faktory.work();
我试着把它翻译成打字稿:

从“faktory worker”导入faktory;
寄存器('ResizeImage',异步({id,size})=>{
const image=wait image.find(id);
等待图像。调整大小(大小);
});
faktory.work();
我不断得到
TypeError:无论我做什么,都无法读取未定义的属性“register”。
我想我必须使用
const
以某种方式创建一个对象,但我就是不知道如何创建


我可以保留语法,但Typescript建议按规则导入的最佳实践
无var要求:require语句不是导入语句的一部分

我认为您也必须实现该模块的Typescript定义:

例如,将该文件保存到root中的文件夹
typings
,并将以下内容添加到
tsconfig.json

{
   "compilerOptions": {
       "typeRoots" : ["./typings"]
   }
}
这将包括接口和注册方法

实现这一点还有其他可能性

向tsconfig.json添加
“esModuleInterop”:true
为我解决了这个问题,例如

{
  "compilerOptions": {
    "esModuleInterop": true
    // ...
  }
}

我的意思是没有为这个定制类型module@JurajKocan它是如何工作的?我上面描述的方式?您可以
从'faktory worker'导入faktory
?是的,在这个模块的index.d.ts中是“导出默认faktory”,没有问题,也没有编译javascript@JurajKocan你有没有可能分享这段代码?正如我提到的,我也可以导入,但当我尝试
faktory.register
时,它会抛出提到的异常
TypeError:无法读取未定义的属性“register”
你用我的答案尝试了吗?这个模块有TypeScript定义,所以它应该是这样工作的。有最新的版本吗?3.0.4中增加了打字。