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]) +})