Skip to content

Commit

Permalink
fix(defineProps): defineProps generates unnecessary array of same typ…
Browse files Browse the repository at this point in the history
…es (#4353)

fix #4352
  • Loading branch information
webfansplz committed Aug 16, 2021
1 parent 77223df commit ad66295
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -790,7 +790,8 @@ export default _defineComponent({
alias: { type: Array, required: true },
method: { type: Function, required: true },
union: { type: [String, Number], required: true },
literalUnion: { type: [String, String], required: true },
literalUnion: { type: String, required: true },
literalUnionNumber: { type: Number, required: true },
literalUnionMixed: { type: [String, Number, Boolean], required: true },
intersection: { type: Object, required: true },
foo: { type: [Function, null], required: true }
Expand All @@ -817,6 +818,7 @@ export default _defineComponent({
union: string | number
literalUnion: 'foo' | 'bar'
literalUnionNumber: 1 | 2 | 3 | 4 | 5
literalUnionMixed: 'foo' | 1 | boolean
intersection: Test & {}
foo: ((item: any) => boolean) | null
Expand Down
5 changes: 4 additions & 1 deletion packages/compiler-sfc/__tests__/compileScript.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -538,6 +538,7 @@ const emit = defineEmits(['a', 'b'])
union: string | number
literalUnion: 'foo' | 'bar'
literalUnionNumber: 1 | 2 | 3 | 4 | 5
literalUnionMixed: 'foo' | 1 | boolean
intersection: Test & {}
foo: ((item: any) => boolean) | null
Expand Down Expand Up @@ -565,8 +566,9 @@ const emit = defineEmits(['a', 'b'])
expect(content).toMatch(
`union: { type: [String, Number], required: true }`
)
expect(content).toMatch(`literalUnion: { type: String, required: true }`)
expect(content).toMatch(
`literalUnion: { type: [String, String], required: true }`
`literalUnionNumber: { type: Number, required: true }`
)
expect(content).toMatch(
`literalUnionMixed: { type: [String, Number, Boolean], required: true }`
Expand Down Expand Up @@ -594,6 +596,7 @@ const emit = defineEmits(['a', 'b'])
method: BindingTypes.PROPS,
union: BindingTypes.PROPS,
literalUnion: BindingTypes.PROPS,
literalUnionNumber: BindingTypes.PROPS,
literalUnionMixed: BindingTypes.PROPS,
intersection: BindingTypes.PROPS,
foo: BindingTypes.PROPS
Expand Down
8 changes: 2 additions & 6 deletions packages/compiler-sfc/src/compileScript.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1703,7 +1703,7 @@ function inferRuntimeType(
return [
...new Set(
[].concat(
node.types.map(t => inferRuntimeType(t, declaredTypes)) as any
...(node.types.map(t => inferRuntimeType(t, declaredTypes)) as any)
)
)
]
Expand All @@ -1716,11 +1716,7 @@ function inferRuntimeType(
}

function toRuntimeTypeString(types: string[]) {
return types.some(t => t === 'null')
? `null`
: types.length > 1
? `[${types.join(', ')}]`
: types[0]
return types.length > 1 ? `[${types.join(', ')}]` : types[0]
}

function extractRuntimeEmits(
Expand Down

0 comments on commit ad66295

Please sign in to comment.