Error creating custom plugin Vuejs + Typescript

I have this structure of my index and service plugin:

enter image description here


declare interface Params {
  title: string;
  description?: string;
  type?: string;
  duration?: number;

export default class ServiceToast {
  public toastRef: any; // component

  public constructor(modalRef: any) {
    this.toastRef = modalRef;

  public open(params: Params) {;

Basically I have created a service that receives the component so that it interacts with the component at ease.


import _Vue from 'vue';
import Toast from '@/components/_includes/layouts/Toast.vue';
import ServiceToast from './service';

const ToastPlugin = {
  install: (Vue: typeof _Vue, options?: any) => {
      created() {
        Vue.prototype.$toast = new ServiceToast(Toast);

export default ToastPlugin;

Where I install the plugin and use the service that I showed above.

enter image description here

Here I call the plugin and make it the corresponding Vue.use but when I want to call it in any component:

<a @click="${ title: 'Hola mundo' })">Hola, dame click!</a>

I get the following error: "TypeError: is not a function"

En el shims-vue-plugin.d.ts:

/* eslint-disable */
import Vue from 'vue';
import { AxiosInstance } from 'axios';
import 'webpack-env';
import { FieldFlagsBag } from 'vee-validate';
import { SnackbarProgrammatic as Snackbar, DialogProgrammatic as Dialog } from 'buefy';
import ServiceToast from './app-config/toast/service';

declare module 'vue/types/vue' {
  interface Vue {
    $auth: any;
    $axios: AxiosInstance;
    veeFields: FieldFlagsBag;
    $dialog: typeof Dialog;
    $snackbar: typeof Snackbar;
    $toast: ServiceToast;

declare namespace NodeJS {
  interface Process extends __WebpackModuleApi.NodeProcess {
    server: boolean;

Does anyone know what it could be? or that I'm missing since I can't find the error: /

Read more here:

Content Attribution

This content was originally published by Piero Pajares at Recent Questions - Stack Overflow, and is syndicated here via their RSS feed. You can read the original post over there.

%d bloggers like this: