# TypeScript 打包
TypeScript 是一种由微软开发的自由和开源的编程语言。它是 javascript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的 面向对象编程。
今天我们就来讲一下 typescript 的打包。对于 typescript 的语法我们就不做过多的介绍了。
# 使用
# 安装
如果想要在项目中使用 typescript 我们首先就需要安装 typescript,以及处理 typescript 相应的 ts-loader
npm install typescript ts-loader -D
# 配置
接着我们在 webpack.common.js 添加 ts-loader 的配置:
...
const commonConfig = {
...
module: {
rules: [
...
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
},
...
]
}
...
}
...
接下来写一段 typescript 代码,我们修改入口文件 index.tsx:
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");
let button = document.createElement('button');
button.textContent = "Say Hello";
button.onclick = function() {
alert(greeter.greet());
}
document.body.appendChild(button);
我们打包一下 npm run dev,我们会看到一个错误,告诉我们需要安装一个 tsconfig.json 文件:

我们可以手动的添加 tsconfig.json 文件,也可以通过 tsc --init 命令来创建,不过这个命令需要在全局安装一下 typescript、或者可以使用 npx tsx --init 来自动生成。
我们手动添加一下 tsconfig.json 文件:
{
"compilerOpitons": {
"outDir": "./dist", // 打包输出的目录,不配置也没事,因为在 webpack 已经配置了
"module": "es6", // 打包的是 es6 d的代码
"target": "es5", // 打包出来的内容是 es5,在大部分浏览器红都能使用
"allowJs": true, // 允许 引入js
},
"include": ["src"], // 对 src 下的代码有效
}
我们重新打包一下 npm run dev,我们可以在浏览器中看到一个按钮,点击弹出 hello world,如下图:

如果我们给Greeter 传入数字 123,
let greeter = new Greeter(123);
vs code 编辑器便会给我们提示相应的错误:

于是我们便可以快乐的开始写 typescript 代码了。
# 库使用 typescript
我们在代码中使用一下 lodash,我们修改一下 index.tsx,我们使用 join 方法,join 方法第一个参数需要传入一个数组。照理来说我们的编辑器应该会提示相应的错误,但是却没有提示相应的错误。
import _ from 'lodash';
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return _.join();
// return _.join(["Hello,", ' ', this.greeting], '');
}
}
let greeter = new Greeter("world");
alert(greeter.greet());
这个时候我们就需要安装 lodash 的类型文件 @types/lodash:
npm install @types/lodash -D
然后我们修改一下 index.tsx 中的 lodash 的引入方式:
import * as _ from 'lodash';
这个时候编辑器就给我们提示了相应的错误了:

有很多库都有其对应的类型文件我们可以在 TypeSearch 进行查找:

# 相关链接
# 示例代码
示例代码可以看这里: