如何初始化一个支持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