From c5f0ecf43a521a509cedcb520f39381d1d3ff36a Mon Sep 17 00:00:00 2001 From: Yunfei He Date: Thu, 27 May 2021 18:20:09 +0800 Subject: [PATCH] fix(types): should unwrap tuple correctly --- src/reactivity/ref.ts | 2 +- test-dts/reactivity.test-d.ts | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test-dts/reactivity.test-d.ts diff --git a/src/reactivity/ref.ts b/src/reactivity/ref.ts index ccef2a8b..aa0ca98e 100644 --- a/src/reactivity/ref.ts +++ b/src/reactivity/ref.ts @@ -31,7 +31,7 @@ export type UnwrapRef = T extends Ref type UnwrapRefSimple = T extends Function | CollectionTypes | BaseTypes | Ref ? T - : T extends Array + : T extends ReadonlyArray ? { [K in keyof T]: UnwrapRefSimple } : T extends object ? UnwrappedObject diff --git a/test-dts/reactivity.test-d.ts b/test-dts/reactivity.test-d.ts new file mode 100644 index 00000000..fcb67082 --- /dev/null +++ b/test-dts/reactivity.test-d.ts @@ -0,0 +1,11 @@ +import { ref, Ref, reactive, expectType } from './index' + +describe('should unwrap tuple correctly', () => { + const readonlyTuple = [ref(0)] as const + const reactiveReadonlyTuple = reactive(readonlyTuple) + expectType>(reactiveReadonlyTuple[0]) + + const tuple: [Ref] = [ref(0)] + const reactiveTuple = reactive(tuple) + expectType>(reactiveTuple[0]) +})