TypeScript(一) 介绍和环境配置

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 总结和设置开发环境


文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录