文章目录
- node 如何运行typescript
- 手工编译 TypeScript 然后运行 JavaScript
- 使用 ts-node
- 创建一个typescript node项目
- tsconfig.json
node 如何运行typescript
在 Node.js 中运行 TypeScript 代码有几种常见的方法,以下是其中几种。
手工编译 TypeScript 然后运行 JavaScript
这种方法需要先将 TypeScript 代码编译为 JavaScript,然后再使用 Node.js 运行 JavaScript 文件。
a. 安装 TypeScript 依赖:
npm install -g typescript
b. 编译 TypeScript 文件:
tsc your-typescript-file.ts
c. 运行生成的 JavaScript 文件:
node your-javascript-file.js
使用 ts-node
安装 ts-node 开发依赖:
npm install --save-dev ts-node
或者使用 Yarn:
yarn add --dev ts-node
使用 ts-node
可以大大提高开发效率,因为无需手动编译 TypeScript 文件,可以直接运行。这在开发阶段非常有用。
但是在生产环境中,仍然建议使用 node 命令运行经过编译的 JavaScript 文件,因为 ts-node 在运行时需要执行编译过程,会影响性能。
ts-node 更适合用于开发和调试阶段,而 node 更适合用于生产环境中运行已经编译好的 JavaScript 代码。在开发过程中,使用 ts-node 可以提高工作效率,而在部署时使用 node 可以获得更好的性能。
我们添加了一个名为 dev
的新脚本,它使用 ts-node 命令运行您的 TypeScript 入口文件 src/app.ts
。
当您在命令行中运行 npm run dev
时,就会启动您的 TypeScript 应用程序,并且无需手动编译 TypeScript 文件。这在开发阶段非常有助于提高工作效率。
创建一个typescript node项目
- 运行
npm init -y
命令,这将在当前目录下创建一个package.json
文件。 - 运行
npm install --save-dev typescript
命令,将 TypeScript 安装为开发依赖。 - 创建
tsconfig.json
文件:
在项目根目录下运行npx tsc --init
命令,这将创建一个tsconfig.json
文件,用于配置 TypeScript 编译器。 - 创建 src 目录并编写 TypeScript 代码:
在项目根目录下创建一个 src 目录,用于存放你的 TypeScript 源代码文件。
在 src 目录下创建一个新文件,例如app.ts
,并编写你的 TypeScript 代码。 - 配置
package.json
文件:
在 package.json 文件的 scripts 部分,添加以下脚本
"scripts": {
"build": "tsc",
"start": "node dist/app.js"
}
“build” 脚本用于编译 TypeScript 代码,“start” 脚本用于运行编译后的 JavaScript 代码。
通过在 package.json
文件中添加脚本,可以方便地使用 npm 命令进行编译和运行:
npm run build
npm start
npm run build
: 运行 TypeScript 编译器,将 TypeScript 代码编译为 JavaScript 代码。
npm start
: 运行编译后的 JavaScript 代码,启动 Node.js 应用程序。
Node.js 应用程序使用 TypeScript 。主要的变化包括:
- 添加 tsconfig.json 文件,配置 TypeScript 编译器选项。
- 将文件扩展名改为 .ts。
- 修改导入语句,使用 TypeScript 的导入语法。
- 使用 TypeScript 语法,为变量和函数添加类型注解。
- 更新 package.json 文件中的 scripts 部分,以便使用 TypeScript 编译器进行构建和运行。
这样,你就可以在 TypeScript 环境下继续开发和维护你的 Node.js 应用程序了
tsconfig.json
{
"compilerOptions": {
/* Visit https://aka.ms/tsconfig to read more about this file */
/* Language and Environment */
"target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
/* Modules */
"module": "commonjs", /* Specify what module code is generated. */
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
/* Type Checking */
"strict": true, /* Enable all strict type-checking options. */
/* Completeness */
// 跳过对引入库的类型检查
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
"skipLibCheck": true,
"outDir": "dist",
}
}
tsconfig.json 文件中如果没有指定 outDir 选项,这意味着编译器不会将 JavaScript 文件输出到任何特定的目录。
"include": ["src/**/*"]
选项,将 src 目录下的所有 TypeScript 文件包括进来。tsconfig.json 文件中没有指定 include 或 files 选项,这意味着编译器不知道哪些 TypeScript 文件需要编译。