在短时间内有一个需求,原项目代码是 js,而我手里头的功能代码是 ts 的,需要将其合并。
按照以往,我通常会将 js 改写成 ts,但时间方面有限,就采取js的方式。因此希望将 ts 代码转换为存 js 代码,只需要把 ts 中的类型直接删除即可,也就是标题所表明的意思。以下在线转化工具能够做到。
TypeScript to plain JavaScript (transform.tools)
可以肯定的是 ts 有选项能够去除类型,于是这次就准备深入了解 TypeScript 的编译配置,也顺带复习一下 tsconfig.json 的相关参数。
毕竟会写代码,不会编译可就...
安装 TypeScript
要编写 ts 代码,肯定要先安装其工具
npm i -g typescript ts-node
其中typescript
自带的 tsc 命令并不能直接运行 typescript 代码,而ts-node
可以直接运行 ts 代码的能力,省去编译阶段。
但不代表ts-node
等于 ts 版的 Node.js,本质上 Node.js 只是 JavaScript 的运行时环境,而 Deno 确实可以直接运行 TypeScript。
不过本次的主题不在 ts-node 与 deno,而在于将 TypeScript 代码编译到 JavaScript 代码。
简单测试
安装完毕,编写一个demo.ts
的文件,在里面编写如下代码
const add = (a: number, b: number): number => {
return a + b
}
let c = add(1, 2)
使用命令 tsc demo.ts
,将会在同级目录下生成demo.js
,内容如下(默认是 ES5 标准)
var add = function (a, b) {
return a + b
}
var c = add(1, 2)
tsconfig.json
可以发现上面转化的代码是 ES5 标准的,然而现在都已经步入到 ES6 阶段了,同时如果有大量 ts 文件需要编译,将十分繁琐,所以就有了 tsconfig.json 用于描述将 TypeScript 转为 JavaScript 代码的配置文件。
终端使用tsc --init
,会在目录下生成 tsconfig.json 文件,默认配置如下(已删除原注释)。
{
"compilerOptions": {
"target": "es5", // 编译
"module": "commonjs", // 模块导入与导出
"esModuleInterop": true, // 支持合成模块的默认导入
"forceConsistentCasingInFileNames": true, // 看不懂
"strict": true, // 严格模式
"skipLibCheck": true // 跳过.d.ts
}
}