composition-api icon indicating copy to clipboard operation
composition-api copied to clipboard

help: withDefaults() Typescript script setup

Open Blemming opened this issue 3 years ago • 3 comments

📚 What are you trying to do? Please describe. Want to declare defaults to my component props in Typescript with the script setup as indicated here

🔍 What have you tried?

<script setup lang="ts">
withDefaults(defineProps<{prop:string}>(),{prop:'my default'})
</script>

says withDefaults is not defined

ℹ️ Additional context I am running a nuxt 2 project with:

  • nuxt-vite
  • unplugin-auto-import
  • unplugin-vue2-script-setup
  • unplugin-vue-components

Anyone know how to do this ?

Blemming avatar Oct 12 '21 21:10 Blemming

Hi! I've had the same issue, it seems if props are not assigned to a variable, withDefaults doesn't work. The workaround is to assign it. This should work:

const _props = withDefaults(defineProps<{ prop: string }>(), { prop: 'my default' })

yassilah avatar Nov 05 '21 11:11 yassilah

It doesn't help. It seems that nuxt 2+ does not recognize new macros defineProps and withDefaults. Am i right ? @danielroe

fellz avatar Nov 08 '21 17:11 fellz

I followed the example https://v3.vuejs.org/api/sfc-script-setup.html#typescript-only-features.

In Dev mode it works, but I have a problem with Typesscript. In the package the types for defineProps and withDefaults are not present. This will show up in the final build.

gisu avatar Nov 10 '21 19:11 gisu