From: Eduardo San Martin Morote Date: Mon, 9 Aug 2021 09:38:54 +0000 (+0200) Subject: fix(types): unwrap computed in store getters X-Git-Tag: v2.0.0-rc.4~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=35d4f591cf48166466f4d4e414de8063d55e3811;p=thirdparty%2Fvuejs%2Fpinia.git fix(types): unwrap computed in store getters Co-authored-by: Yasser Lahbibi Fix #602 Close #603 --- diff --git a/src/types.ts b/src/types.ts index 3cbe0189..25d04006 100644 --- a/src/types.ts +++ b/src/types.ts @@ -420,7 +420,9 @@ export type StoreWithActions = { * @internal */ export type StoreWithGetters = { - 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 } /** diff --git a/test-dts/storeSetup.test-d.ts b/test-dts/storeSetup.test-d.ts index 16db41bb..922df03a 100644 --- a/test-dts/storeSetup.test-d.ts +++ b/test-dts/storeSetup.test-d.ts @@ -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(setupStore.count) expectType(setupStore.$state.count) expectType(setupStore.double) +expectType(setupStore.triple) expectType<(amount?: number) => number>(setupStore.increment)