Vue中Typescript常用写法
[TOC]
使用Ts的原因
js是一门弱类型、动态类型的语言,存在类型隐式转换、运行时报错等难以预知的问题;而ts是静态类型、强类型语言,编译时即可报错,类型检查更为严格;使开发更为严谨,错误更易发现;其次,接口的定义以及类型的定义更利于团队中代码的维护,也便于代码的阅读
待添加…
创建项目
使用vue-cli3.x创建项目,选择typescript配置项,及class写法
项目迁移
依赖项
npm install @vue/cli-plugin-typescript
typescript
vue-class-component
vue-property-decorator
添加
tsconfig.json
1 | { |
添加对.vue文件的ts声明
1 | declare module "*.vue" { |
vue2.x迁移 待添加…
API迁移
主要写法参考
demo
https://github.com/lijing233/vue_ts_demo.git
全局生命文件
在cli生成项目中含有一个shims-vue.d.ts
文件,因为在ts文件中是无法识别vue文件的,所以添加声明让ts能够识别
1 | declare module "*.vue" { |
.vue文件写法
父组件
1 | <template> |
子组件
1 | <template> |
mixin
mixin.ts
1 | import Vue from "vue"; |
index.vue
1 | import MyMixin from "@/mixin/mixin.ts"; |
Router Hooks
如要使用路由钩子 beforeRouteEnter 、beforeRouteLeave、beforeRouteUpdate需要在入口注册,否则将被认为是普通函数
class-component-hooks.js
1 | // class-component-hooks.js |
main.ts
1 | import './utils/class-component-hooks' |
挂载在vue原型上的属性或方法
对于一些全局配置或封装的ajax方法,通常会挂载到vue的原型上,但在ts中必须提前声明再使用
src/types/vued.ts
1 | // 1. 确保在声明补充的类型之前导入 'vue' |
main.ts
1 | Vue.prototype.$globalVal = "999" |
vuex 迁移
待添加…