Просмотр исходного кода

types: Use unique symbol type for _isRef property of ref object (#118)

Rahul Kadyan 6 лет назад
Родитель
Сommit
f58e5e96f2

+ 1 - 0
packages/reactivity/__tests__/ref.spec.ts

@@ -78,6 +78,7 @@ describe('reactivity/ref', () => {
     expect(isRef(computed(() => 1))).toBe(true)
 
     expect(isRef(0)).toBe(false)
+    expect(isRef(1)).toBe(false)
     // an object that looks like a ref isn't necessarily a ref
     expect(isRef({ value: 0 })).toBe(false)
   })

+ 1 - 1
packages/reactivity/src/effect.ts

@@ -131,7 +131,7 @@ export function track(
       targetMap.set(target, (depsMap = new Map()))
     }
     let dep = depsMap.get(key!)
-    if (!dep) {
+    if (dep === void 0) {
       depsMap.set(key!, (dep = new Set()))
     }
     if (!dep.has(effect)) {

+ 2 - 1
packages/reactivity/src/ref.ts

@@ -4,9 +4,10 @@ import { isObject } from '@vue/shared'
 import { reactive } from './reactive'
 
 export const refSymbol = Symbol()
+export type RefSymbol = typeof refSymbol
 
 export interface Ref<T> {
-  _isRef: symbol
+  _isRef: RefSymbol
   value: UnwrapNestedRefs<T>
 }