Typescript搭建开发环境

为了方便后期使用,我们搭建一个基于Typescript的开发环境,后期的项目都可以基于此进行开发。

  • 建立一个空的项目文件,使用npm init命令生成相应的json配置文件,(也可以使用npm init -y,使用默认配置)
    //注意事项:
    1、在输入了npm init内容后,我们需要填写配置项,其中
            entry point: ./src/index.ts
            keywords:typescript,source_code,lison
            license:MIT  
  • 创建项目文件目录
    demo2
    │  package.json  // 配置文件
    │  
    ├─build   // webpack打包文件和配置
    ├─src      //  项目代码文件
    │  ├─api
    │  ├─assets
    │  ├─config
    │  ├─tools
    │  └─utils
    └─typings  // ts文件集
    
  • 安装ts:npm install typescript tslint -g, 然后使用ts初始化项目: tsc --init 命令会生成json文件

  • 添加webpack配置,首先安装:cnpm install webpack webpack-cli webpack-dev-server -D
  • 最后编写相应的webpack.json.js
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    const CleaWebpackPlugin = require('clean-webpack-plugin')
    
    module.exports = {
      entry: "./src/index.ts", // 入口点
      output: {
        filename: "main.js", // 编译后的输出文件, wepack自动引入main.js到index.html中
      },
      resolve: {
        extensions: [".js", ".ts", ".tsx"], // 自动加载文件后缀的文件
      },
      module: {
        rules: {
          test: /\.tsx?$/,
          use: "ts-loader", // 将tsx的文件用ts-loader解析
          exclude: /node_modules/, // 忽略到nodemodules
        },
      },
      // NODE_ENV在package.json中传入,在其中使用corss-env 传递环境变量,使用dev-server启动服务(需要安装cnpm install cross-env -D
      devtool: process.env.NODE_ENV === "production" ? false : "inline-source-map", // 通过环境变量判断是否加载此选项
    
      devServer:{
          contentBase:'./dist', // 启动目录
          stats:'errors-only',  // 控制台只展示error信息
          compress:false,  // 是否压缩
          host:'localhost',
          port:8089
      },
      plugins:[
          // 安装插件 cnpm install clean-webpack-plugin html-webpack-plugin -D
          new CleaWebpackPlugin ({
              cleanOnceBeforeBuildPatterns:['./dist']
          }),
          new HtmlWebpackPlugin({
              template:'./src/template/index.html'
          })
      ]
    };  
  • package.json文件配置项目启动文件
    {
      "name": "demo2",
      "version": "1.0.0",
      "description": "",
      "main": "./src/index.ts",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "cross-env NODE_ENV=development webpack-dev-server --config ./build/webpack.config.js"
      },
      "keywords": [
        "typescript",
        "source_code",
        "lison"
      ],
      "author": "",
      "license": "MIT",
      "devDependencies": {
        "webpack": "^4.43.0",
        "webpack-cli": "^3.3.11",
        "webpack-dev-server": "^3.0.0"
      }
    }
    

      

枚举类型

// 使用枚举类型可以为一组数值赋予友好的名字,如下的Red等均为键,默认的值从0开始
// 下面我们订初始值为1,依次累加
enum Color {Red=1, Green, Yellow}
let c: Color = Color.Green
console.log(c)  // 2

// 如果中间的值改变那?
enum Color2 {Red, Green, Yellow=12, Blue, Orange}
console.log(Color2.Green, Color2.Orange) // 1  14

// 枚举还提供了一个方法可以通过值来获取它的键
let colorName : string = Color[2]
console.log(colorName) // 'Green'