TypeScript Vue组件中的泛型

时间:2019-07-31 01:02:39

标签: typescript vuejs2 typescript-generics

我正在尝试将通用类型提供给vue组件,但不知道如何从调用方提供它。

例如,对于

下的组件
export default class Toggle<T> extends Vue {
    @Prop({ default: {} })    private payload!: T;
    @Prop(Function)           private handleCallback!: (payload: T) => Promise<any>;
}

T如下调用时,如何提供类型?

<toggle :payload="{propOfT: 'value of T'}" :handleCallback='someCallbackFn'/>

1 个答案:

答案 0 :(得分:0)

也许您可以使用

extend<Data, Methods, Computed, Props>(options?: ThisTypedComponentOptionsWithRecordProps<V, Data, Methods, Computed, Props>): ExtendedVue<V, Data, Methods, Computed, Props>;



interface Data {
  dataProp: boolean
}

interface Methods {
  methodOne: (name: Type) => Promise<void>
}

interface Props {
  items: Item[]
}

export default Vue.extend<Data, Methods, {}, Props>({ ...