// determine fallthrough
this.hasFallthrough = false
if (rawProps) {
- if (rawProps.$) {
+ if (rawProps.$ || !comp.props) {
this.hasFallthrough = true
} else {
// check if rawProps contains any keys not declared
- const propsOptions = normalizePropsOptions(comp)[0]!
+ const propsOptions = normalizePropsOptions(comp)[0]
for (const key in rawProps) {
- if (!hasOwn(propsOptions, key)) {
+ if (!hasOwn(propsOptions!, key)) {
this.hasFallthrough = true
break
}
const emitsOptions = normalizeEmitsOptions(comp)
const isProp = propsOptions ? (key: string) => hasOwn(propsOptions, key) : NO
const castProp = propsOptions
- ? (key: string, value: any, isAbsent = false) =>
+ ? (value: any, key: string, isAbsent = false) =>
resolvePropValue(
propsOptions,
key as string,
}
if (key in target) {
- return castProp(key, target[key as string]())
+ return castProp(target[key as string](), key)
}
const dynamicSources = target.$
if (dynamicSources) {
isDynamic = isFunction(source)
source = isDynamic ? (source as Function)() : source
if (hasOwn(source, key)) {
- return castProp(key, isDynamic ? source[key] : source[key]())
+ return castProp(isDynamic ? source[key] : source[key](), key)
}
}
}
- return castProp(key, undefined, true)
+ return castProp(undefined, key, true)
}
const propsHandlers = propsOptions
}
const attrsHandlers = {
- get: (target, key: string) => getProp(target, key, false),
+ get: (target, key: string) => {
+ return getProp(target, key, false)
+ },
has: hasAttr,
getOwnPropertyDescriptor(target, key: string) {
if (hasAttr(target, key)) {