TypeScript 介绍和环境配置
TypeScript 介绍
TypeScript 是 Javascript 的一个超集。我们都知道 Javascript 是一门动态脚本语言,他不需要二进制代码运行。这个特性使得 Javascript 的所有调试必须都要在运行时候进行,在代码编译期间是无法提前知晓的。而 TypeScript 不同它可以在你编写代码的时候就对一些错误提示。它还能在你使用某个数据的时候,为你列出这个数据可以访问的属性和方法.多人协作的时候,一些接口的定义,方法的使用都可能因为个人的喜欢或者沟通不畅导致逻辑实现的差异。而如果引入了 TypeScript,则会对一些实现进行强校验.如果不按照接口实现,编译就没法通过,如果对代码质量要求高,可以将严格检查打开.
TypeScript 搭建开发环境
(1) 安装 Node
(2) 全局安装 tslint 模块
npm install -g tslint
(3) 初始化项目
新建一个文件夹例如 TSweb
用 vscode 开发工具打开它
(4) 利用 npm 初始化项目
- 使用 npm 默认 package.json 配置
npm init -y
这个时候我们看到了在根目录创建了 package.json 文件
(5) 在根目录下创建几个文件夹
(i) src 用来存放项目的开发资源,在 src 创建如下文件夹
utils: 和业务相关的可复用方法
tools: 和业务无关的纯工具函数
assets: 图片字体等静态资源
api: 可复用的接口请求方法
config: 配置文件
(ii) typings: 模块声明文件
(iii) build: webpack 构建配置
(6) 全局安装 typescript,全局安装后你可以在任意文件夹使用 tsc 命令
npm i typescript -g
- 安装完成后我们进入项目的根目录,利用 typescript 初始化
tsc --init
这个时候我们会发现在项目的根目录多了一个 tsconfig.json 文件,在这个文件下有个属性 lib 被注释掉了, 我们需要开启他,然后在这个数组里面添加”es6”和”dom”其它的暂时不用修改
;['dom', 'es6']
- 我们还需要在项目下安装 typescript 因为我们要搭配 webpack 开发
npm i typescript
(7) 配置 TSLint
接下来我们要安装 tslint
(i) 全局安装 TSLint
npm i tslint -g
(ii) 然后我们在项目的根目录下使用 TSLint 初始化配置文件
tslint - i
(iii)这个时候项目的根目录下会多了一个 tslint.json 文件生成的 tslint.json 文件会有以下几个字段
{
"defaultSeverity": "error",
"extends": [
"tslint:recommended"
],
"jsRules": {},
"rules": {},
"rulesDirectory": []
}
defaultSeverity 设置提醒级别如果为 error 则会报错,如果是 warning 自则会警告,如果是 off 则关闭.那 TSLint 就关闭了
extands 指定继承指定的预设配置规则
jsRules 用来配置对.js 和 jsx 文件的校验,配置规则的方法和下面的 rules 一样
rules 重点中的重点,我们要让 TSLint 依据怎样的规则来校验代码比如我们不允许代码中使用 eval 就要配置”no-eval”:true
rulesDirectory 可以指定规则配置文件,这里是相对路径
(iv)配置 webpack
- 先来安装 webpack,webpack-cli,和 webpack-dev-server
npm install webpack webpack-cli webpack-dev-server -D
- 在 build 文件夹下,我们给这个文件起名 webpack.config.js 然后在 package.json 里面启动命令
{
"scripts": {
"start": "cross-env NODE_ENV=development webpack-dev-server --mode=development --config build/webpack.config.js"
}
}
这里我们用到一个插件”cross-env”,并且后面跟着一个参数 NODE_ENV=development,这个用来在 webpack.config.js 里通过 process.env.NODE_ENV 来获取当前是开发还是生产环境,这个插件要安装:
npm install cross-env
- 紧接着我们要在 webpack.config.js 中书写配置
const HtmlWebpackPlugin = require('html-webpack-plugin')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
module.exports = {
// 指定入口文件
// 这里我们在src文件夹下创建一个index.ts
entry: './src/index.ts',
// 指定输出文件名
output: {
filename: 'main.js'
},
resolve: {
// 自动解析一下拓展,当我们要引入src/index.ts的时候,只需要写src/index即可
// 后面我们讲TS模块解析的时候,写src也可以
extensions: ['.tsx', '.ts', '.js']
},
module: {
// 配置以.ts/.tsx结尾的文件都用ts-loader解析
// 这里我们用到ts-loader,所以要安装一下
// npm install ts-loader -D
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
}
]
},
// 指定编译后是否生成source-map,这里判断如果是生产打包环境则不生产source-map
devtool: process.env.NODE_ENV === 'production' ? false : 'inline-source-map',
// 这里使用webpack-dev-server,进行本地开发调试
devServer: {
contentBase: './dist',
stats: 'errors-only',
compress: false,
host: 'localhost',
port: 8089
},
// 这里用到两个插件,所以首先我们要记着安装
// npm install html-webpack-plugin clean-webpack-plugin -D
plugins: [
// 这里在编译之前先删除dist文件夹
new CleanWebpackPlugin({
cleanOnceBeforeBuildPatterns: ['./dist']
}),
// 这里我们指定编译需要用模板,模板文件是./src/template/index.html,所以接下来我们要创建一个index.html文件
new HtmlWebpackPlugin({
template: './src/template/index.html'
})
]
}
- 按照上面的步骤代码中的步骤一步步走,最后一步创建 index.html 时候,代码里面写
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>TS-Learning</title>
</head>
<body></body>
</html>
- 最后一步 运行命令启动服务
npm run start
- 测试
// index.ts
let a: number = 123
const h1 = document.createElement('h1')
h1.innerHTML = 'Hello, I am Typescript'
document.body.appendChild(h1)
如果没有意外的话。页面上会出现 Hello, I am Typescript
- 再来配置一下打包命令在 package.json 的 script 里增加 build 命令
{
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "cross-env NODE_ENV=development webpack-dev-server --mode=development --config ./build/webpack.config.js",
"build": "cross-env NODE_ENV=production webpack --mode=production --config ./build/webpack.config.js"
}
}
- 打包的时候运行
npm run build
总结
Typescript 概述
Typescript 总结和设置开发环境