26Vue-TypeScript(一)

339 阅读3分钟

前序

图片.png

图片.png

图片.png

图片.png

图片.png

图片.png

认识TypeScript

图片.png

图片.png

图片.png

TypeScript编译环境

let message:string="HelloWorld" TypeScript只是在JS的基础上,加上了类型声明,本质运行的时候还是要成一个JS代码。那么是谁将TS-->JS呢?

tsc:typescript compile

babel:插件preset

使用tsc

tsc:将ts代码转为js,最终呈现在浏览器中

1.全局安装: npm install typescript -g

2.体验ts demo.ts

function foo(payload: string){
    console.log(payload.length)
}
//foo(123)  这里传的是number类型,直接就会提示错误
foo("aaa")  //可以传过去,因为参数被限定为string类型

3.将ts转为js代码 tsc demo.ts(ts文件名)

4.之后就会生成同名的js文件

5.在index.html中的src属性,将生成的js文件引入

通过上面的demo可以发现,在编译期间就会提示错误,不用等到运行时才告诉我们说:这个类型传的不匹配,大大减少了我们后期维护的成本。

搭建TS环境

图片.png

默认情况下,所有ts文件都是在同一个作用域下进行编译,我在demo里声明了name,我在test也声明name,此时就会报错,因为重复声明了,如何将文件变成单独作用域呢?

图片.png

在下面写一个export {},表示我这个是一个模块,模块有自己的单独作用域,就可以避免上述这种情况。不过这只是其中一种解决方式,后续我们还会有其他更好的。

我们发现通过上述tsc来执行ts的过程是非常的麻烦的。我们希望在书写好ts文件后,自动创建出了相应的js文件,并且我每次更新代码时,自动跑到浏览器上,并且自动刷新(HMR热更新),能不能这样安排一下? 可以

1.使用webpack搭建环境:

脚手架其实帮我们搞好了,但是我们最好知道一下原理,方便后期学习

1.npm init:创建package.json

2.npm install webpack webpack-cli -D:安装本地webpack(node_modules文件和package-lock.json)

3.在package.json添加

"scripts:"{
    "test" : "...",
    "build" : "webpack" ,
    当我npm run build就会执行webpack,然后就会帮我们打包
    打包的时候就会夹在我们的webpack.config.js配置文件
    "serve":"webpack serve" 搭建本地服务
}

4.创建webpack.config.js配置:

const path = require("path")
module.exports={
    entry:"./src/main.ts", ts代码的入口
    output:{
    //打包在dist文件夹里
        path:path.resolve(__dirname,"./dist"),
        filename:"bundle.js" 打包出来的文件名
    }
}

5.安装loadernpm install ts-loader typescript -D

上面4步骤弄好之后,开始正片:通过loader来将ts转为js,loader的作用我在之前的webpack笔记中有详细介绍

module.exports={
    entry:"./src/main.ts", ts代码的入口
    output:{
    //打包在dist文件夹里
        path:path.resolve(__dirname,"./dist"),
        filename:"bundle.js" 打包出来的文件名
    },
    devServe:{
    },
    导入ts文件的时候,可以省略不写ts后缀名
    这里重写extensions会把以前默认的extensions覆盖掉
    当我ts转为js后,也要把.js写上,省略js后缀名
    resolve:{
        extensions:[".ts","js",".json",".cjs"]
    }
    module:{
        rules:[{
        对我们所有ts结尾的文件使用ts-loader
            test:/\.ts$/,
            loader:'ts-loader'
        }]
    }
}

6.tsc --init:自动生成tsconfig.json

7.npm install webpack-dev-server-D:搭建本地服务

8.npm install html-webpack-plugin -D:设置模板

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

plugins:[{
    new HtmlWebpackPlugin({
        template:"./index.html"使用index.html模板
    })
}]
2.ts-node:node提供的一个库,执行ts-node ts文件名可以直接转换成js文件并且编译,他是运行在node环境下的

安装:

//安装ts-node的时候,首先要先安装这两个依赖
npm install tslib @types/node -g

npm install ts-node -g

使用:ts-node demo1.ts

图片.png