我是 TypeScript 的新手。我目前正在学习使用 Typescript 语言的 NodeJS Loopback 4 框架。我的问题是如何将在 JS 文件中导出的一些函数、类导入到我的 TS 文件中。搜索了几种方法后,但它仍然对我不起作用。 这是示例:
// /src/index.ts
import {plus} from './lib/test';
console.log(plus(1,2));
// /src/lib/test.js
export function plus(x, y) {
return x + y;
}
我也尝试像这样使用定义 typescript
// /src/lib/test.d.ts
export declare function plus(x: number, y: number): number;
但是在index.ts文件中引入这个函数时仍然报错
Error: Cannot find module './lib/test' at Function.Module._resolveFilename (module.js:543:15)
最佳答案
看起来 tsconfig.json 没有启用“allowJs”,因为它导出了声明。
您是否有理由不希望它成为 typescript 文件?如果您将 test.js 更改为 test.ts,通过将其设为 .ts 应该允许它在您的索引文件中被识别。
更新
到此为止的完整聊天记录可以找到here . 用于测试的存储库找到 here
好的,就像@maaz-syed-adeeb 提到的那样简单的解决方案将起作用:
import { path } from './lib/test.js'
扩展之所以重要,是因为定义文件在 typescript 环境中优先于 javascript 文件。这就是模块导入失败的原因。
为避免指定 .js
扩展名,您还可以像这样设置目录结构:
src
|- index.ts
|- lib
|- test.js
|- test.d.ts
|- index.[js|ts]
在 ./lib/index
文件中导出所有测试:
//./src/lib/index.[js|ts]
export * from './test'
然后从库中全部导入:
// ./src/index.ts
import { path } from './lib'
// or
import { path } from './lib/test.js'
如果您混合使用 javascript 和 typescript(假设您正在使用现有代码库迁移到 typescript),则需要更新 tsconfig.json
以包含,这样您就不会在您的 IDE 中没有收到警告:
{
"compilerOptions": {
"allowJs": true,
"declaration": false
}
}
这样您的 javascript 文件将与 typescript 文件一起转译到您的目标目录。
关于node.js - NodeJS 如何将 JS 文件导入 TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54320967/