Class bindings in Vue can accept strings, arrays and objects, according to the docs at 
CodePudding user response:
I haven't found any type in Vue's core that is usable but we can use the information of the documentation to make up our own type. It can either be:
stringRecord<string, boolean>(Object syntax)(string | Record<string, boolean>)[](Combined)
So you could do something like:
type Class = string | Record<string, boolean> | (string | Record<string, boolean>)[];
const props = defineProps<{ class?: Class }>();
CodePudding user response:
https://vuejs.org/guide/components/attrs.html#accessing-fallthrough-attributes-in-javascript
You shouldn't type class as a prop, as it is inherited by default
(and added to root element, see https://vuejs.org/guide/components/attrs.html#disabling-attribute-inheritance to bypass)
<script setup>
import { useAttrs } from 'vue'
const attrs = useAttrs()
const klass = attrs.class
</script>
