# 属性类型定义
有时,你必须要在类组件之外定义属性和方法。例如,Vue
的官方状态管理仓库 Vuex (opens new window) 提供了 mapGetters
和 mapActions
辅助器,将 store
中的属性和方法映射到组件中去。 这些辅助器需要在组件选项对象中使用。
即使在这种情况下,您也可以将组件选项传递给 @Component
装饰器的参数。 但是,当它们在 runtime
时运行时,它不会在类型级别自动声明属性和方法。
你需要在类组件中手动声明其类型:
import Vue from 'vue'
import Component from 'vue-class-component'
import { mapGetters, mapActions } from 'vuex'
// Interface of post
import { Post } from './post'
@Component({
computed: mapGetters([
'posts'
]),
methods: mapActions([
'fetchPosts'
])
})
export default class Posts extends Vue {
// Declare mapped getters and actions on type level.
// You may need to add `!` after the property name
// to avoid compilation error (definite assignment assertion).
// Type the mapped posts getter.
posts!: Post[]
// Type the mapped fetchPosts action.
fetchPosts!: () => Promise<void>
mounted() {
// Use the mapped getter and action.
this.fetchPosts().then(() => {
console.log(this.posts)
})
}
}
← Props 定义 $refs 类型扩展 →