TypeScript Vue 组件中的泛型

Bis*_*del 11 typescript typescript-generics vuejs2

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

例如,对于下面的组件

export default class Toggle<T> extends Vue {
    @Prop({ default: {} })    private payload!: T;
    @Prop(Function)           private handleCallback!: (payload: T) => Promise<any>;
}
Run Code Online (Sandbox Code Playgroud)

T当它被调用时,我将如何提供类型?

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

use*_*176 1

也许你可以使用

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>({ ...
Run Code Online (Sandbox Code Playgroud)