]> git.ipfire.org Git - thirdparty/vuejs/pinia.git/commitdiff
fix(types): unwrap computed in store getters
authorEduardo San Martin Morote <posva13@gmail.com>
Mon, 9 Aug 2021 09:38:54 +0000 (11:38 +0200)
committerEduardo San Martin Morote <posva13@gmail.com>
Mon, 9 Aug 2021 09:38:54 +0000 (11:38 +0200)
Co-authored-by: Yasser Lahbibi <yasser.lahbibi@apenhet.com>
Fix #602
Close #603

src/types.ts
test-dts/storeSetup.test-d.ts

index 3cbe01895882c522b9e61e2050814efc59053cf4..25d0400627d471f022258d7e4e5532ce65bcd9fa 100644 (file)
@@ -420,7 +420,9 @@ export type StoreWithActions<A> = {
  * @internal
  */
 export type StoreWithGetters<G> = {
-  readonly [k in keyof G]: G[k] extends (...args: any[]) => infer R ? R : never
+  readonly [k in keyof G]: G[k] extends (...args: any[]) => infer R
+    ? R
+    : UnwrapRef<G[k]>
 }
 
 /**
index 16db41bbfc3965ae3d3c3823769e4b3ba814a1ee..922df03abf0dbc52b3f7c2f374dbaf12d3b604e7 100644 (file)
@@ -4,6 +4,12 @@ import { defineStore, expectType } from './'
 const useSetupStore = defineStore('name', () => {
   const count = ref(0)
   const double = computed(() => count.value * 2)
+  const triple = computed({
+    get: () => count.value * 2,
+    set: (tripled) => {
+      count.value = Math.round(tripled / 3)
+    },
+  })
 
   function increment(amount = 1) {
     count.value += amount
@@ -11,7 +17,7 @@ const useSetupStore = defineStore('name', () => {
     return count.value
   }
 
-  return { count, double, increment }
+  return { count, double, increment, triple }
 })
 
 const setupStore = useSetupStore()
@@ -19,4 +25,5 @@ expectType<'name'>(setupStore.$id)
 expectType<number>(setupStore.count)
 expectType<number>(setupStore.$state.count)
 expectType<number>(setupStore.double)
+expectType<number>(setupStore.triple)
 expectType<(amount?: number) => number>(setupStore.increment)