node.js - NodeJS 如何将 JS 文件导入 TypeScript
问题描述
我是 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;
}
我也尝试使用这样的定义打字稿
// /src/lib/test.d.ts
export declare function plus(x: number, y: number): number;
但在 index.ts 文件中导入此函数时仍然出错
错误:在 Function.Module._resolveFilename (module.js:543:15) 处找不到模块“./lib/test”
解决方案
看起来 tsconfig.json 没有启用“allowJs”,因为它导出了声明。
您是否有理由不希望这是一个打字稿文件?如果您将 test.js 更改为 test.ts,通过将其设为 .ts 应该允许它在您的索引文件中被识别。
更新
到此为止的完整聊天记录可以在这里找到。用于测试的存储库在这里找到
好的,@maaz-syed-adeeb 提到的简单解决方案将起作用:
import { path } from './lib/test.js'
扩展很重要的原因是定义文件优先于打字稿环境中的 javascript 文件。这就是模块导入爆炸的原因。
为避免指定.js
扩展名,您还可以像这样设置目录结构:
src
|- index.ts
|- lib
|- test.js
|- test.d.ts
|- index.[js|ts]
在./lib/index
文件中全部从测试中导出:
//./src/lib/index.[js|ts]
export * from './test'
然后从 lib 中导入所有内容:
// ./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 文件将与打字稿文件一起被转译到您的目标目录。
推荐阅读
- python-3.x - Discord Bot 任务未更新
- regex - apikey 模式的正则表达式
- teradata - 如果存在统计信息,Teradata 会删除统计信息
- javascript - 停止点击事件触发同一块的另一部分
- python - 我想知道正确的 Tensorflow 对象检测——植物病害检测和杂草检测的 api 模型?
- image - 在屏幕变小,在屏幕侧面接触图像之前使图像缩小
- javascript - 在数组中创建子数组
- r - 使用 auto_arima_model 的插入符号训练导致“错误:请使用 `x` 的列名”
- android - 如何使用 HTTP 请求(Flutter/Dart)检查 Internet 连接?
- matlab - 根据 matlab 中另一个表中的值重新分配一个表中的值