From 06e26390f9320a4af35ec69edabc3ea91effc4d8 Mon Sep 17 00:00:00 2001 From: Mikhailov Nikita Date: Thu, 4 Aug 2022 07:04:31 +0300 Subject: [PATCH] fix(useFavicon): writable return type (#2036) Co-authored-by: Anthony Fu --- packages/core/useFavicon/index.ts | 13 +++++++++++-- packages/shared/utils/types.ts | 13 +++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/core/useFavicon/index.ts b/packages/core/useFavicon/index.ts index e4aa4f53529..42b8b77ee4a 100644 --- a/packages/core/useFavicon/index.ts +++ b/packages/core/useFavicon/index.ts @@ -1,5 +1,6 @@ -import type { MaybeComputedRef } from '@vueuse/shared' +import type { MaybeComputedRef, MaybeReadonlyRef, MaybeRef } from '@vueuse/shared' import { isString, resolveRef } from '@vueuse/shared' +import type { ComputedRef, Ref, WritableComputedRef } from 'vue-demi' import { watch } from 'vue-demi' import type { ConfigurableDocument } from '../_configurable' import { defaultDocument } from '../_configurable' @@ -16,6 +17,14 @@ export interface UseFaviconOptions extends ConfigurableDocument { * @param newIcon * @param options */ +export function useFavicon( + newIcon?: MaybeReadonlyRef, + options?: UseFaviconOptions +): ComputedRef +export function useFavicon( + newIcon: MaybeRef, + options?: UseFaviconOptions +): Ref export function useFavicon( newIcon: MaybeComputedRef = null, options: UseFaviconOptions = {}, @@ -43,7 +52,7 @@ export function useFavicon( { immediate: true }, ) - return favicon + return favicon as WritableComputedRef } export type UseFaviconReturn = ReturnType diff --git a/packages/shared/utils/types.ts b/packages/shared/utils/types.ts index d0189383931..ddac273e445 100644 --- a/packages/shared/utils/types.ts +++ b/packages/shared/utils/types.ts @@ -31,10 +31,19 @@ export type MaybeRef = T | Ref * Maybe it's a ref, or a plain value, or a getter function * * ```ts - * type MaybeComputedRef = T | Ref | (() => T) + * type MaybeComputedRef = (() => T) | T | Ref | ComputedRef * ``` */ -export type MaybeComputedRef = (() => T) | T | Ref | ComputedRef +export type MaybeComputedRef = MaybeReadonlyRef | MaybeRef + +/** + * Maybe it's a computed ref, or a getter function + * + * ```ts + * type MaybeReadonlyRef = (() => T) | ComputedRef + * ``` + */ +export type MaybeReadonlyRef = (() => T) | ComputedRef /** * Make all the nested attributes of an object or array to MaybeRef