-import { isObject, toTypeString } from '@vue/shared'
+import { isObject, toRawType } from '@vue/shared'
import { mutableHandlers, readonlyHandlers } from './baseHandlers'
import {
mutableCollectionHandlers,
const collectionTypes = new Set<Function>([Set, Map, WeakMap, WeakSet])
const isObservableType = /*#__PURE__*/ makeMap(
- ['Object', 'Array', 'Map', 'Set', 'WeakMap', 'WeakSet']
- .map(t => `[object ${t}]`)
- .join(',')
+ 'Object,Array,Map,Set,WeakMap,WeakSet'
)
const canObserve = (value: any): boolean => {
return (
!value._isVue &&
!value._isVNode &&
- isObservableType(toTypeString(value)) &&
+ isObservableType(toRawType(value)) &&
!nonReactiveValues.has(value)
)
}
isObject,
isReservedProp,
hasOwn,
- toTypeString,
+ toRawType,
PatchFlags,
makeMap
} from '@vue/shared'
}
}
-function toRawType(value: unknown): string {
- return toTypeString(value).slice(8, -1)
-}
-
function isExplicable(type: string): boolean {
const explicitTypes = ['string', 'number', 'boolean']
return explicitTypes.some(elem => type.toLowerCase() === elem)
export const toTypeString = (value: unknown): string =>
objectToString.call(value)
+export function toRawType(value: unknown): string {
+ return toTypeString(value).slice(8, -1)
+}
+
export const isPlainObject = (val: unknown): val is object =>
toTypeString(val) === '[object Object]'