静态类型系统能帮助你有效防止许多潜在的运行时错误,而且随着你的应用日渐丰满会更加显著。这就是为什么 Vue 不仅仅为 Vue core 提供了针对 TypeScript 的官方类型声明,还为 Vue Router 和 Vuex 也提供了相应的声明文件
TsConfig配置
1 | { |
配置参考:
Webpack的基础配置一览
每个项目最重要的一部分个人感觉是webpack的配置,只有配置好webpack部分后续才能顺利进行开发
这里webpack使用了4.+的版本,所以算是体验了较为新的webpack,其中和旧版的有些区别,这里不做介绍
先贴出webpack的配置代码
1 | const path = require('path') |
注意点:
vue-loader v15需要在webpack插件中添加VueLoaderPlugin插件
webpack4.+需要指定mode,开发模式还是生产模式
注意ts-loader的配置
这里只是简单进行webpack配置,没有太完整地根据完整的项目来进行配置,只是简单配置了生产环境下的代码混淆压缩,以及对应的开发服务器和热更新等,有需要其他功能扩展的自行配置。
Vue环境搭建配置
vue-shims.d.ts的添加
这个是比较重要的一个配置,该文件需要放到vue的入口文件中,具体的d.ts代码如下:
1 | declare module '*.vue' { |
目的是让ts能够识别到vue的静态类型
vue的入口文件
index.ts:
1 | import Vue from 'vue' |
入口文件跟普通的js写法没有太多的区别,只是文件类型为ts。
开始写vue的单文件页面和组件
单文件页面模板
1 | <template> |
主要是在script项中把lang写为ts类型
使用装饰器来实现组件和页面
这里我们主要使用两个装饰器库vue-property-decorator 和 vuex-class, vue-property-decorator其是基于vue-class-得component的基础扩展修改的。
- 大致了解一下vue-property-decorator的装饰器的用法
一共有七个装饰器:
@Emit
@Inject
@Model
@Prop
@Provide
@Watch
@Component
(exported fromvue-class-component
)
这里使用vue-property-decorator的例子来做解析
1 | import { Component, Emit, Inject, Model, Prop, Provide, Vue, Watch } from 'vue-property-decorator' |
相当于js的写法:
1 | const s = Symbol('baz') |
相信通过以上的例子我们很容易就看出各个装饰器如何去使用,这里就不再做太多的解释。
- 再看一下vuex-class的使用方法
同样举例官方的使用列子
1 | import Vue from 'vue' |
Vuex的配置
store的入口
1 | import Vue from 'vue' |
这里RootState只是用于留空,目的是为了注入全局的store,区别于modules的状态
vuex的modules的配置
- 写一个全局类型声明
1 | export interface RootState { |
version字段就是我们刚才在RootState中定义的字段
- 定义模板profile
profile模块的类型声明:
1 | export interface ProfileState { |
profile的模块实现:
1 | import { RootState } from '../types' |
这里我们就完成了Vuex的配置了,就可以结合装饰器对vuex进行调用,而且具有静态类型提示,十分方便。
完成了这一系列的配置我们的尝试已经完成,自己写了个简单的demo,有兴趣可以观看github怎么配置。