• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

关于在Vue中Typescript的写法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

根据官方文档 -》 Vue.js

目前暂时有两种在Vue中运用typescript的方法

Vue.extend

  import Vue from 'vue'

  const Component = Vue.extend({
  // type inference enabled
  name: "Estend",
  data() {
      return {

      }
  },
  methods:{

      }
  })

学习成本最低, 只是在外面套一层外壳,还是按照以前的方式书写,但是Vue.extend需要结合mixins使用的时候, 在mixins写的代码,typescript 会识别不到。

 

vue-class-component

基于官方维护的装饰器,有vue-property-decorator和vuex-class

而vue-property-decorator 包含的装饰器有以下

@Componnent

@Prop

@Watch

@Emit

@Provide

@Inject

• 还有@Model @PropSync 的这两个,不过一帮很少用

 

关于mixin 混入的写法等下再介绍

基本写法就和下方差不多,注意点:

1.声明一个组件的时候@Component 一定要写上,不管有没有引入别的组件也要写上

2.对于以前data 属性,直接在class 里面声明即可

3.对于Computed 不需要再写computed的字眼只需要写get or set

4.对于Prop 你需要传多少个参数就写多少个 @Watch 同理

5.对于method 声明是public Or private 即可

6.对于@Emit 就如下图所示

import { Component, Vue, Prop } from 'vue-property-decorator';
import { State, Getter } from 'vuex-class';
import { componentA, componentB } from '@/components';
@Component({
  components:{ componentA, componentB},
})
export default class HelloWorld extends Vue{
@Prop(Number) readonly propA!: number | undefined
@Prop({ default: 'default value' }) readonly propB!: string
@Prop([String, Boolean]) readonly propC!: string | boolean | undefined

// 原data
message = 'Hello'

// 计算属性
  private get reversedMessage (): string[] {
  return this.message.split('').reverse().join('')
}
private set reversedMessage (value:string): string[] {
  this.$emit('xxx')
}

// method
public changeMessage (): void {
  this.message = 'Good bye'
},
public getName(): string {
  let storeName = name
  return storeName
}
  // 生命周期
private created ():void { },
private mounted ():void { },
private updated ():void { },
private destroyed ():void { }
@Emit('callback')
private getCallback() {
 this.$emit('xxx');
}
}


对于@provide 和@inject 如下图所示


 

对于mixin 的写法,目前看到比较正确的一种形式

• 通过继承mixin 的方式来享用同样的方法
 

对于声明周期,测试和以前类似, 一般为private


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript 素描 - 泛型、枚举发布时间:2022-07-18
下一篇:
跨游戏引擎跨平台的TypeScript运行时开源了发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap