详解Vue3.0 前的 TypeScript 最佳入门实践

2020-06-14 06:02:51易采站长站整理

但是,解释器读到函数修饰符“@”的时候,后面步骤会是这样:

去调用

test
函数,
test
函数的入口参数就是那个叫“
func
”的函数;
test
函数被执行,入口参数的(也就是
func
函数)会被调用(执行);

换言之,修饰符带的那个函数的入口参数,就是下面的那个整个的函数。有点儿类似

JavaScrip
t里面的
function a (function () { ... });

2.

vue-property-decorator
vuex-class
提供的装饰器

vue-property-decorator
的装饰器:

@Prop
@PropSync
@Provide
@Model
@Watch
@Inject
@Provide
@Emit
@Component (provided byvue-class-component)
Mixins (the helper function named mixins provided by vue-class-component)

vuex-class
的装饰器:

@State
@Getter
@Action
@Mutation

我们拿原始Vue组件模版来看:


import {componentA,componentB} from '@/components';

export default {
components: { componentA, componentB},
props: {
propA: { type: Number },
propB: { default: 'default value' },
propC: { type: [String, Boolean] },
}
// 组件数据
data () {
return {
message: 'Hello'
}
},
// 计算属性
computed: {
reversedMessage () {
return this.message.split('').reverse().join('')
}
// Vuex数据
step() {
return this.$store.state.count
}
},
methods: {
changeMessage () {
this.message = "Good bye"
},
getName() {
let name = this.$store.getters['person/name'] return name
}
},
// 生命周期
created () { },
mounted () { },
updated () { },
destroyed () { }
}

以上模版替换成修饰符写法则是:


import { Component, Vue, Prop } from 'vue-property-decorator';
import { State, Getter } from 'vuex-class';
import { count, name } from '@/person'
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