135. 简单的 Pinia 类型

困难0

创建一个类型级别的函数,其类型类似于 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 访问,但它们是只读的。

评论(0)
题库

TypeScript

加载中...