From a01675ef8f99b5acd6832c53051f4415b18609f2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=BF=9C=E6=96=B9os?= Date: Mon, 5 Aug 2024 10:51:56 +0800 Subject: [PATCH] feat(types): allow computed getter and setter types to be unrelated (#11472) close #7271 --- packages/dts-test/ref.test-d.ts | 20 ++++++++++++++++++++ packages/reactivity/src/computed.ts | 12 ++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/packages/dts-test/ref.test-d.ts b/packages/dts-test/ref.test-d.ts index f8f2500aa1..b6e055dfb4 100644 --- a/packages/dts-test/ref.test-d.ts +++ b/packages/dts-test/ref.test-d.ts @@ -184,6 +184,26 @@ describe('allow getter and setter types to be unrelated', () => { e.value = d }) +// computed +describe('allow computed getter and setter types to be unrelated', () => { + const obj = ref({ + name: 'foo', + }) + + const c = computed({ + get() { + return JSON.stringify(obj.value) + }, + set(val: typeof obj.value) { + obj.value = val + }, + }) + + c.value = { name: 'bar' } // object + + expectType(c.value) +}) + // shallowRef type Status = 'initial' | 'ready' | 'invalidating' const shallowStatus = shallowRef('initial') diff --git a/packages/reactivity/src/computed.ts b/packages/reactivity/src/computed.ts index 5dedecfe6b..06a287fcd8 100644 --- a/packages/reactivity/src/computed.ts +++ b/packages/reactivity/src/computed.ts @@ -20,7 +20,7 @@ export interface ComputedRef extends WritableComputedRef { [ComputedRefSymbol]: true } -export interface WritableComputedRef extends Ref { +export interface WritableComputedRef extends Ref { /** * @deprecated computed no longer uses effect */ @@ -30,9 +30,9 @@ export interface WritableComputedRef extends Ref { export type ComputedGetter = (oldValue?: T) => T export type ComputedSetter = (newValue: T) => void -export interface WritableComputedOptions { +export interface WritableComputedOptions { get: ComputedGetter - set: ComputedSetter + set: ComputedSetter } /** @@ -175,10 +175,10 @@ export function computed( getter: ComputedGetter, debugOptions?: DebuggerOptions, ): ComputedRef -export function computed( - options: WritableComputedOptions, +export function computed( + options: WritableComputedOptions, debugOptions?: DebuggerOptions, -): WritableComputedRef +): WritableComputedRef export function computed( getterOrOptions: ComputedGetter | WritableComputedOptions, debugOptions?: DebuggerOptions, -- 2.47.3