在 Vue 3 中,我正在建立一個(gè)函數(shù),它將接受元件的實(shí)例和要傳遞的屬性。我也在使用 TypeScript,想知道是否可以輸入這些參數(shù)。例如,該函數(shù)將類(lèi)似於:
const example = (component, props) => { // };
所以我的問(wèn)題是:
您可以使用typescript 提供的許多功能和vue 中的Component
類(lèi)型來(lái)實(shí)現(xiàn)正確的鍵入,創(chuàng)建一個(gè)擴(kuò)展Component
的通用類(lèi)型,然後推斷元件選項(xiàng)/props 使用infer
,使用Partial 使它們成為可選:
import type { Component } from "vue"; function example<T extends Component> (Comp: T, props: T extends Component<infer P> ? Partial<P> : never) { //.... } example(Alert, { variant: "success"})
注意:這也推斷屬性和元件實(shí)例實(shí)用程式