如何在带有打字稿的Nuxt中声明全局可重用函数?

时间:2020-07-02 16:13:58

标签: javascript typescript nuxt.js

我想在全球范围内使用showError,showNotice,showSuccess之类的功能。

我遵循了一些教程,最终做到了:

  1. 创建具有内容的global.d.ts文件:

    declare global {
      const showSuccess: Toast;
      const showWarning: Toast;
      const showNotice: Toast;
      const question: QuestionFunction;
    }
    
  2. 在Notification.ts中添加了以下代码

    const notificationPlugin: Plugin = function ({}, inject: Function)     {
      inject('showSuccess', showSuccess);
      inject('showError', showError);
      inject('showWarning', showWarning);
      inject('showInfo', showInfo);
      inject('confirm', confirm);
    };
    
    export default notificationPlugin;
    
    const _global = (global | window) as any;
    _global.showSuccess = showSuccess;
    

但是,它对我不起作用。当我将鼠标悬停在函数上时,Webstorm确实显示了函数定义。但是,Nuxt抛出错误,表明showSuccess未定义。

更新:现在,通过在Notification.ts文件中进行以下更改来使它起作用

declare global {
  function showSuccess<T>(message: string | toastOption, options?: messageOption): void;
  function showError<T>(message: string | toastOption, options?: messageOption): void;
  function showInfo<T>(message: string | toastOption, options?: messageOption): void;
  function showWarning<T>(message: string | toastOption, options?: messageOption): void;
  function confirm<T>(message: string, questionOption?: Partial<QuestionOption>): Promise<boolean>;
}

现在,我可以构建应用程序而不会出现任何错误。但是,webstorm仍然显示未定义的函数错误。

0 个答案:

没有答案