135. 简单的 Pinia 类型
困难
创建一个类型级别的函数,其类型类似于 Pinia 库。你不需要实际实现函数,只需要添加类型。
概述
该函数只接受一个参数,该参数的类型是一个对象。该对象包含以下 4 个属性:
id
- 只是一个字符串(必填)state
- 一个返回对象作为 store 状态的函数(必填)getters
- 一个对象,其中包含类似 Vue 的计算属性或 Vuex 的 getter 的方法,具体如下(可选)actions
- 一个对象,其中包含可以执行副作用并修改状态的方法,具体如下(可选)
Getters
当你像这样定义 store 时:
const store = defineStore({
// ...其他必填字段
getters: {
getSomething() {
return 'xxx'
}
}
})
你应该像这样使用它:
store.getSomething
而不是:
store.getSomething() // 错误
此外,getters 可以通过 this
访问状态和/或其他 getters,但状态是只读的。
Actions
当你像这样定义 store 时:
const store = defineStore({
// ...其他必填字段
actions: {
doSideEffect() {
this.xxx = 'xxx'
return 'ok'
}
}
})
使用时只需调用它:
const returnValue = store.doSideEffect()
Actions 可以返回任何值或什么都不返回,并且可以接收任意数量的不同类型的参数。
参数类型和返回类型不能丢失,这意味着调用时必须进行类型检查。
状态可以通过 this
访问和修改。Getters 可以通过 this
访问,但它们是只读的。