Преглед на файлове

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

Rahul Kadyan преди 6 години
родител
ревизия
f58e5e96f2
променени са 3 файла, в които са добавени 4 реда и са изтрити 2 реда
  1. 1 0
      packages/reactivity/__tests__/ref.spec.ts
  2. 1 1
      packages/reactivity/src/effect.ts
  3. 2 1
      packages/reactivity/src/ref.ts

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