parent
							
								
									2f91db30cd
								
							
						
					
					
						commit
						afdd2f2835
					
				@ -864,6 +864,7 @@ export default _defineComponent({
 | 
				
			|||||||
    recordRef: { type: Object, required: true },
 | 
					    recordRef: { type: Object, required: true },
 | 
				
			||||||
    interface: { type: Object, required: true },
 | 
					    interface: { type: Object, required: true },
 | 
				
			||||||
    alias: { type: Array, required: true },
 | 
					    alias: { type: Array, required: true },
 | 
				
			||||||
 | 
					    method: { type: Function, required: true },
 | 
				
			||||||
    union: { type: [String, Number], required: true },
 | 
					    union: { type: [String, Number], required: true },
 | 
				
			||||||
    literalUnion: { type: [String, String], required: true },
 | 
					    literalUnion: { type: [String, String], required: true },
 | 
				
			||||||
    literalUnionMixed: { type: [String, Number, Boolean], required: true },
 | 
					    literalUnionMixed: { type: [String, Number, Boolean], required: true },
 | 
				
			||||||
@ -887,6 +888,7 @@ export default _defineComponent({
 | 
				
			|||||||
        recordRef: Record<string, null>
 | 
					        recordRef: Record<string, null>
 | 
				
			||||||
        interface: Test
 | 
					        interface: Test
 | 
				
			||||||
        alias: Alias
 | 
					        alias: Alias
 | 
				
			||||||
 | 
					        method(): void
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        union: string | number
 | 
					        union: string | number
 | 
				
			||||||
        literalUnion: 'foo' | 'bar'
 | 
					        literalUnion: 'foo' | 'bar'
 | 
				
			||||||
 | 
				
			|||||||
@ -532,6 +532,7 @@ const emit = defineEmits(['a', 'b'])
 | 
				
			|||||||
        recordRef: Record<string, null>
 | 
					        recordRef: Record<string, null>
 | 
				
			||||||
        interface: Test
 | 
					        interface: Test
 | 
				
			||||||
        alias: Alias
 | 
					        alias: Alias
 | 
				
			||||||
 | 
					        method(): void
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        union: string | number
 | 
					        union: string | number
 | 
				
			||||||
        literalUnion: 'foo' | 'bar'
 | 
					        literalUnion: 'foo' | 'bar'
 | 
				
			||||||
@ -557,6 +558,7 @@ const emit = defineEmits(['a', 'b'])
 | 
				
			|||||||
      expect(content).toMatch(`recordRef: { type: Object, required: true }`)
 | 
					      expect(content).toMatch(`recordRef: { type: Object, required: true }`)
 | 
				
			||||||
      expect(content).toMatch(`interface: { type: Object, required: true }`)
 | 
					      expect(content).toMatch(`interface: { type: Object, required: true }`)
 | 
				
			||||||
      expect(content).toMatch(`alias: { type: Array, required: true }`)
 | 
					      expect(content).toMatch(`alias: { type: Array, required: true }`)
 | 
				
			||||||
 | 
					      expect(content).toMatch(`method: { type: Function, required: true }`)
 | 
				
			||||||
      expect(content).toMatch(
 | 
					      expect(content).toMatch(
 | 
				
			||||||
        `union: { type: [String, Number], required: true }`
 | 
					        `union: { type: [String, Number], required: true }`
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
@ -585,6 +587,7 @@ const emit = defineEmits(['a', 'b'])
 | 
				
			|||||||
        recordRef: BindingTypes.PROPS,
 | 
					        recordRef: BindingTypes.PROPS,
 | 
				
			||||||
        interface: BindingTypes.PROPS,
 | 
					        interface: BindingTypes.PROPS,
 | 
				
			||||||
        alias: BindingTypes.PROPS,
 | 
					        alias: BindingTypes.PROPS,
 | 
				
			||||||
 | 
					        method: BindingTypes.PROPS,
 | 
				
			||||||
        union: BindingTypes.PROPS,
 | 
					        union: BindingTypes.PROPS,
 | 
				
			||||||
        literalUnion: BindingTypes.PROPS,
 | 
					        literalUnion: BindingTypes.PROPS,
 | 
				
			||||||
        literalUnionMixed: BindingTypes.PROPS,
 | 
					        literalUnionMixed: BindingTypes.PROPS,
 | 
				
			||||||
 | 
				
			|||||||
@ -1355,14 +1355,25 @@ function extractRuntimeProps(
 | 
				
			|||||||
) {
 | 
					) {
 | 
				
			||||||
  const members = node.type === 'TSTypeLiteral' ? node.members : node.body
 | 
					  const members = node.type === 'TSTypeLiteral' ? node.members : node.body
 | 
				
			||||||
  for (const m of members) {
 | 
					  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] = {
 | 
					      props[m.key.name] = {
 | 
				
			||||||
        key: m.key.name,
 | 
					        key: m.key.name,
 | 
				
			||||||
        required: !m.optional,
 | 
					        required: !m.optional,
 | 
				
			||||||
        type:
 | 
					        type: type || [`null`]
 | 
				
			||||||
          __DEV__ && m.typeAnnotation
 | 
					 | 
				
			||||||
            ? inferRuntimeType(m.typeAnnotation.typeAnnotation, declaredTypes)
 | 
					 | 
				
			||||||
            : [`null`]
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user