fix(compiler-sfc): support method signature in defineProps

fix #2983
This commit is contained in:
Evan You
2021-06-28 15:39:04 -04:00
parent 2f91db30cd
commit afdd2f2835
3 changed files with 21 additions and 5 deletions

View File

@@ -1355,14 +1355,25 @@ function extractRuntimeProps(
) {
const members = node.type === 'TSTypeLiteral' ? node.members : node.body
for (const m of members) {
if (m.type === 'TSPropertySignature' && m.key.type === 'Identifier') {
if (
(m.type === 'TSPropertySignature' || m.type === 'TSMethodSignature') &&
m.key.type === 'Identifier'
) {
let type
if (__DEV__) {
if (m.type === 'TSMethodSignature') {
type = ['Function']
} else if (m.typeAnnotation) {
type = inferRuntimeType(
m.typeAnnotation.typeAnnotation,
declaredTypes
)
}
}
props[m.key.name] = {
key: m.key.name,
required: !m.optional,
type:
__DEV__ && m.typeAnnotation
? inferRuntimeType(m.typeAnnotation.typeAnnotation, declaredTypes)
: [`null`]
type: type || [`null`]
}
}
}