[英]What TypeScript type is used to pass a class in Vue 3 script setup prop definitions?
我有一個使用腳本設置方法的 Vue 3 單文件組件。 我要定義的道具之一將接受class
屬性的等效項。 這意味着 prop 值可以是字符串、表達式、數組或 object。 當我嘗試使用withDefaults()
為這個道具分配一個默認的空字符串值時,問題就來了。
withDefaults(
defineProps<{
itemClass?: unknown
}>(),
{
itemClass: '',
}
)
綁定為
<div :class="itemClass">...</div>
我試圖避免使用any
作為類型。 我嘗試了unknown
,但是當我嘗試給它一個默認值時得到一個錯誤。 臨時解決方案似乎是簡單地刪除默認值,但可能存在我想要設置默認值的情況。
Vue class
屬性是否有特定類型?
class
綁定值可以是以下類型之一:
string
例子:
<div:class="myStringProp">
Record<string, boolean>
( Object 語法)
例子:
<div:class="{ active: true, error: true }">
或上述的混合數組:
(string | Record<string, boolean>)[]
(數組語法)
例子:
<div:class="['item', { active: true, error: true }]">
所以itemClass
類型應該是這些類型的並集:
defineProps<{
itemClass?: string | Record<string, boolean> | (string | Record<string, boolean>)[]
}>()
對於 Vue 3.2.39,我使用這個:
import { HTMLAttributes } from "vue";
const props = defineProps<{
class?: HTMLAttributes["class"];
}>();
無論如何它仍然是any
。 希望 Vue 很快就會有合適的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.