TS 和nodejs的神奇反应 - day8

本文详细介绍了如何在Node.js项目中初始化并支持TypeScript,包括安装步骤、配置tsconfig.json、处理ESM模块冲突和编译过程。还讨论了如何在TypeScript项目中处理索引签名和解决Node.js中ESM模块解析错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何初始化一个支持typescript的项目?

安装 TypeScript: 首先确保你已经全局安装了 TypeScript。如果没有安装,可以使用以下命令安装:

npm install -g typescript

初始化项目: 使用 npm 或者 yarn 初始化一个新的 Node.js 项目。

npm init -y

安装 TypeScript 相关依赖: 安装 TypeScript 以及一些必要的 TypeScript 相关依赖。

npm install typescript @types/node

配置 TypeScript: 创建一个 tsconfig.json 文件,用于配置 TypeScript 编译器。

{
  "compilerOptions": {
    "target": "es6", 
    "module": "commonjs", 
    "outDir": "./dist", 
    "strict": true, 
    "esModuleInterop": true 
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules"]
}

这是一个基本的 tsconfig.json 配置文件示例,你可以根据需要进行调整。

也可以在package.json文件中添加一行 "type": "module"用于支持es,然后是用tsc --init 初始化命令创建tsconfig文件。

创建源代码目录: 创建一个存放 TypeScript 源代码的目录,例如 src

mkdir src

编写 TypeScript 代码:src 目录下编写你的 TypeScript 代码。

// src/index.ts
const message: string = 'Hello, TypeScript!';
console.log(message);

更新 package.json 中的脚本: 更新 package.json 文件中的脚本,以便使用 TypeScript 编译器来编译 TypeScript 代码。

{
  "scripts": {
    "start": "node dist/index.js",
    "build": "tsc"
  }
}

这里的 "start" 脚本用于运行编译后的 JavaScript 代码,"build" 脚本用于编译 TypeScript 代码。

编译 TypeScript 代码: 运行以下命令来编译 TypeScript 代码。

npm run build

这会将 TypeScript 代码编译为 JavaScript,并将其放在 dist 目录中。现在 Node.js 项目就已经初始化并支持 TypeScript 了。

当一个对象有多个同类型的键值对是,如何做TS类型声明?

使用索引签名来动态自适应,但是所有成员都必须符合字符串的索引签名

举例:const headers: { [key: string]: string } = {

"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",

"Cache-Control": "max-age=0",

Connection: "keep-alive",

Cookie: cookie,

"Sec-Fetch-Dest": "document",

"Sec-Fetch-Mode": "navigate",

"Sec-Fetch-Site": "same-origin",

"Sec-Fetch-User": "?1",

"Upgrade-Insecure-Requests": "1",

"User-Agent":

"sec-ch-ua-platform": '"Windows"',

"Referrer-Policy": "strict-origin-when-cross-origin",

};

运行Ts项目报错,导入导出报错?

原因,tsconfig配置的是commonjs,package配置的是es冲突了,修改tsconfig.js文件,符合es规则。

// "module": "commonjs", // Specify what module code is generated.

"module": "es2022",

TS项目+ES+Node环境下,tsc解析生成的文件运行报错,提示找不到自定义引入的模块?

node:internal/modules/esm/resolve:265 throw new ERR_MODULE_NOT_FOUND( ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'H:\Project\TopNovel\getNovelData\dist\api\qiDianApi' imported from H:\Project\TopNovel\getNovelData\dist\index.js

原因:如果你的项目是使用 TypeScript 编写的,并且你想在 Node.js 中使用 ECMAScript 模块(ESM),模块解析后的路径通常是不包含.js后缀的。

在 TypeScript 项目中,你可以使用 .ts 文件作为模块文件,并且不需要显式地包含 .js 后缀。但是,在 Node.js 中,使用 ESM 时可能会出现一些问题,因为 Node.js 在解析模块时默认是按照 CommonJS 规范进行的,并且通常会期望 .js 后缀。

解决办法:

1、手动修改解析后的js文件中的引入,添加.js后缀

2、直接不解析,使用ts-node直接运行。

npm install -g ts-node

`ts-node your_file.ts

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值