TypeScript 基础(一)环境搭建

没有类型检查带来的问题

编程开发的共识:错误出现的越早越好

能在写代码的时候发现错误,就不要在代码编译时再发现;能在代码编译时发现,就不要在代码运行时发现;能在开发阶段发现错误,就不要在测试期间发现错误;能在测试期间发现错误,就不要在上线后发现错误

例子

// 1.没有对类型进行检查
// 2.没有对是否传入参数进行检查
function foo(message) {
  console.log(message.length)
}

foo('Hello JavaScript')
// 等到在运行时才能发现错误
foo()
// 永远执行不到
foo('Hello World')

类型思维的缺失

没有类型约束,担心代码不够安全,不够健壮

TypeScript

拥有类型的 JavaScript 超集,可以编译成 JavaScript 代码

安装编译器

npm install typescript -g

使用

tsc index.ts

运行环境的搭建

ts-node

安装 ts-node,及其依赖包

npm install ts-node tslib @types/node -g

使用 ts-node

ts-node index.ts

Webpack

初始化项目

npm init -y

npm install webpack webpack-cli ts-loader typescript webpack-dev-server html-webpack-plugin -D

tsc --init # 生成tsconfig.json

配置 webpack.config.js

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  mode: 'development',
  entry: './src/main.ts',
  output: {
    path: path.resolve(__dirname, './dist'),
    filename: 'bundle.js'
  },
  resolve: {
    extensions: ['.ts', '.js', '.cjs', '.json']
  },
  devServer: {},
  module: {
    rules: [
      {
        test: /\.ts$/,
        loader: 'ts-loader'
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './index.html'
    })
  ]
}

逻辑代码

// src/main.ts
import { sum } from './math'
const message: string = 'Hello TypeScript'
console.log(message)
console.log(sum(10, 15))

// src/math.ts
export function sum(num1: number, num2: number): number {
  return num1 + num2
}

在项目目录下新建 index.html

编辑 package.json

{
  "scripts": {
    "build": "webpack",
    "serve": "webpack serve"
  }
}