gpt4 book ai didi

javascript - 将自己的 JavaScript 模块导入转换后的 TypeScript

转载 作者:行者123 更新时间:2023-12-02 20:54:40 25 4
gpt4 key购买 nike

我正在尝试将现有的 JavaScript 代码库一次转换为 TypeScript 一个文件。遇到导入问题。

转换:

// JavaScript
const AWS = require("aws-sdk");

至:

// TypeScript
import AWS = require("aws-sdk");

当 AWS SDK 安装在 node_modules 中时工作。当我尝试导入我自己的模块之一时,转换:

// This works, but is it "correct"? Path here is relative to compiled .js file
const C = require('../utils/constants');

至:

import C = require('../utils/constants');

失败并显示找不到模块'../utils/constants'.ts(2307)

对于上下文,以下是相关文件的路径(所有相对于项目根目录的路径):

  1. 我尝试使用的模块文件:utils/constants.js
  2. 原始.js文件:utils/sesUtil.js
  3. 等效 .ts 文件:src/utils/sesUtil.ts(这是我们在此讨论的文件)
  4. 编译的.js文件:dist/sesUtil.js

让我想到一些问题:

  1. 导入我自己的 (CommonJS) JavaScript 模块的正确方法是什么?
  2. 路径应该相对于 .ts 文件存在的位置 (src/utils/ses.ts) 还是相对于已编译的 .js 文件将被转到 (dist/ses.js)?

这是我的 tsconfig.json 文件:

{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es6",
"noImplicitAny": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
}
},
"include": [
"src/**/*"
]
}

最佳答案

关于路径问题。确保至少设置 rootDiroutDir 属性 - reference .

--rootDir - specifies the root directory of input files. Only use to control the output directory structure with --outDir.

--outDir - redirect output structure to the directory.

例如您在 src/animal/Dog.ts 中有一个源文件。它将出现在 dist/animal/Dog.js 中,并进行以下设置:

"rootDir": "src",
"outDir": "dist"

include 字段也必须按照描述进行设置 here 。这些是编译时要包含的文件的常见 UNIX glob 模式。您还可以使用 files,但 files 用于包含确切的文件,它不是 glob 模式。因此社区更喜欢使用 include

注意 TypeScript 代码中的 require。最好完全忘记 require (除了一些边缘情况)。如果您想从模块导入所有内容,请使用:

import * as MyModule from './MyModule';
import MyModule from './MyModule';

关于javascript - 将自己的 JavaScript 模块导入转换后的 TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61516665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com