fix(types/reactivity): fix ref type inference on nested reactive properties with .value
fix #1111
This commit is contained in:
parent
f40f3a0e95
commit
bc1f097e29
@ -5,11 +5,15 @@ import { reactive, isProxy, toRaw } from './reactive'
|
||||
import { ComputedRef } from './computed'
|
||||
import { CollectionTypes } from './collectionHandlers'
|
||||
|
||||
const RefSymbol = Symbol()
|
||||
|
||||
export interface Ref<T = any> {
|
||||
/**
|
||||
* @internal
|
||||
* Type differentiator only.
|
||||
* We need this to be in public d.ts but don't want it to show up in IDE
|
||||
* autocomplete, so we use a private Symbol instead.
|
||||
*/
|
||||
__v_isRef: true
|
||||
[RefSymbol]: true
|
||||
value: T
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { expectType } from 'tsd'
|
||||
import { Ref, ref, isRef, unref } from './index'
|
||||
import { Ref, ref, isRef, unref, reactive } from './index'
|
||||
|
||||
function plainType(arg: number | Ref<number>) {
|
||||
// ref coercing
|
||||
@ -84,3 +84,12 @@ function withSymbol() {
|
||||
}
|
||||
|
||||
withSymbol()
|
||||
|
||||
const state = reactive({
|
||||
foo: {
|
||||
value: 1,
|
||||
label: 'bar'
|
||||
}
|
||||
})
|
||||
|
||||
expectType<string>(state.foo.label)
|
||||
|
Loading…
Reference in New Issue
Block a user