From: Johnson Chu Date: Fri, 24 Dec 2021 14:07:09 +0000 (+0800) Subject: feat(types): support IDE features for store context (#924) X-Git-Tag: @pinia/nuxt@0.1.8~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4733f49c5af400aea7d3d1002265f9cdebcdd222;p=thirdparty%2Fvuejs%2Fpinia.git feat(types): support IDE features for store context (#924) --- diff --git a/packages/pinia/src/types.ts b/packages/pinia/src/types.ts index a37ab76a..ab21cd3a 100644 --- a/packages/pinia/src/types.ts +++ b/packages/pinia/src/types.ts @@ -543,34 +543,58 @@ export type _GettersTree = Record< */ export type _ActionsTree = Record +/** + * @internal + */ +type _ExtractStateFromSetupStore_Keys = keyof { + [K in keyof SS as SS[K] extends _Method | ComputedRef ? never : K]: any +} + +/** + * @internal + */ +type _ExtractActionsFromSetupStore_Keys = keyof { + [K in keyof SS as SS[K] extends _Method ? K : never]: any +} + +/** + * @internal + */ +type _ExtractGettersFromSetupStore_Keys = keyof { + [K in keyof SS as SS[K] extends ComputedRef ? K : never]: any +} + +/** + * @internal + */ +type _UnwrapAll = { [K in keyof SS]: UnwrapRef } + /** * @internal */ export type _ExtractStateFromSetupStore = SS extends undefined | void ? {} - : { - [K in keyof SS as SS[K] extends _Method | ComputedRef - ? never - : K]: UnwrapRef - } + : _ExtractStateFromSetupStore_Keys extends keyof SS + ? _UnwrapAll>> + : never /** * @internal */ export type _ExtractActionsFromSetupStore = SS extends undefined | void ? {} - : { - [K in keyof SS as SS[K] extends _Method ? K : never]: SS[K] - } + : _ExtractActionsFromSetupStore_Keys extends keyof SS + ? Pick> + : never /** * @internal */ export type _ExtractGettersFromSetupStore = SS extends undefined | void ? {} - : { - [K in keyof SS as SS[K] extends ComputedRef ? K : never]: UnwrapRef - } + : _ExtractGettersFromSetupStore_Keys extends keyof SS + ? _UnwrapAll>> + : never /** * Options passed to `defineStore()` that are common between option and setup