在 Vue 3 中,我正在创建一个函数,它将接受组件的实例和要传递的属性。我也在使用 TypeScript,想知道是否可以输入这些参数。例如,该函数将类似于:
const example = (component, props) => { // };
所以我的问题是:
P粉9174060092024-01-06 09:36:48
您可以使用 typescript 提供的许多功能和 vue 中的 Component
类型来实现正确的键入,创建一个扩展 Component
的通用类型,然后推断组件选项/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"})
注意:这也推断属性和组件实例实用程序