-
-
Notifications
You must be signed in to change notification settings - Fork 8.9k
Closed
Labels
Description
Version
3.0.0-rc.7
Reproduction link
https://github.com/varHarrie/vue-script-setup-reproduction
Steps to reproduce
// ===== types.ts =====
export type ButtonSize = 'small' | 'medium' | 'large'
export type ButtonType = 'normal' | 'primary' | 'warn' | 'danger'
export interface ButtonProps {
size: ButtonSize
type: ButtonType
}
export type ButtonEvents = ["click"];
// ===== MyButton.vue =====
<template>
<button :class="classes">
<slot />
</button>
</template>
<script lang="ts" setup="props, ctx">
import { ButtonProps, ButtonEvents } from './types'
declare const props: ButtonProps
declare const ctx: SetupContext<ButtonEvents>
export const classes = [
props.size,
props.type
]
</script>
// ===== App.vue =====
<template>
<my-button size="large" type="danger" />
</template>
What is expected?
button has large
and danger
class names.
What is actually happening?
button has size
and type
attributes.
When I change declare const props: ButtonProps
to declare const props: { size: string, type: string }
, it works as expected.