From: Eduardo San Martin Morote Date: Thu, 29 Apr 2021 12:45:02 +0000 (+0200) Subject: feat: mark getters as readonly X-Git-Tag: v2.0.0-alpha.14~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fcbeb95cdd7f2b7d58731392d707183b311863ff;p=thirdparty%2Fvuejs%2Fpinia.git feat: mark getters as readonly --- diff --git a/src/store.ts b/src/store.ts index cfe8a3c7..fe96a924 100644 --- a/src/store.ts +++ b/src/store.ts @@ -229,6 +229,7 @@ function buildStoreToUse< const computedGetters: StoreWithGetters = {} as StoreWithGetters for (const getterName in getters) { + // @ts-ignore: it's only readonly for the users computedGetters[getterName] = computed(() => { setActivePinia(pinia) // eslint-disable-next-line @typescript-eslint/no-use-before-define diff --git a/src/types.ts b/src/types.ts index ee310210..bd1ed9ad 100644 --- a/src/types.ts +++ b/src/types.ts @@ -122,7 +122,10 @@ export type StoreWithActions = { * @internal */ export type StoreWithGetters = { - [k in keyof G]: G[k] extends (this: infer This, store?: any) => infer R + readonly [k in keyof G]: G[k] extends ( + this: infer This, + store?: any + ) => infer R ? R : never } diff --git a/test-dts/store.test-d.ts b/test-dts/store.test-d.ts index e1a02adf..fcb4bee3 100644 --- a/test-dts/store.test-d.ts +++ b/test-dts/store.test-d.ts @@ -33,6 +33,9 @@ expectType<'on' | 'off'>(store.a) // @ts-expect-error store.nonExistant +// @ts-expect-error +store.upper = 'thing' + // @ts-expect-error store.nonExistant.stuff