From fcbeb95cdd7f2b7d58731392d707183b311863ff Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Thu, 29 Apr 2021 14:45:02 +0200 Subject: [PATCH] feat: mark getters as readonly --- src/store.ts | 1 + src/types.ts | 5 ++++- test-dts/store.test-d.ts | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) 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 -- 2.47.2