Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为vue声明JS mixin?_Javascript_Typescript_Vue.js - Fatal编程技术网

Javascript 如何为vue声明JS mixin?

Javascript 如何为vue声明JS mixin?,javascript,typescript,vue.js,Javascript,Typescript,Vue.js,我正在用typescript编写一个vue项目,我想使用由javascript编写的第三部分库中的mixin,如何编写.d.ts使ts可以在mixin中找到定义的函数 我试过这种方法,但不起作用: // common.d.ts declare module 'thrid-part-lib' { import { VueClass } from 'vue-class-component/lib/declarations'; export interface SomeMixin&l

我正在用typescript编写一个vue项目,我想使用由javascript编写的第三部分库中的mixin,如何编写
.d.ts
使ts可以在mixin中找到定义的函数

我试过这种方法,但不起作用:

// common.d.ts
declare module 'thrid-part-lib' {
    import { VueClass } from 'vue-class-component/lib/declarations';

    export interface SomeMixin<T> extends VueClass<T> {
        refresh(): Promise<void>;
    }
}
这在中有记录

将其放入项目中的
.d.ts
文件中,以向组件添加
refresh()
mixin方法:

// 1. Make sure to import 'vue' before declaring augmented types
import Vue from 'vue'

// 2. Specify a file with the types you want to augment
//    Vue has the constructor type in types/vue.d.ts
declare module 'vue/types/vue' {
  // 3. Declare augmentation for Vue
  interface Vue {
    refresh():  void;
  }
}

您可以通过创建类似于
vuelidate error extractor.d.ts的文件来增强第三方混入:

declare module 'vuelidate-error-extractor' {
   import { ValidationRule } from 'vuelidate/lib/validators';

   // eslint-disable-next-line @typescript-eslint/class-name-casing
   export class singleErrorExtractorMixin extends Vue {
      readonly events: any;

      readonly name: string;

      readonly isValid: boolean;

      readonly hasErrors: boolean;

      readonly preferredValidator: ValidationRule;
   }
}

这增加了,但不完整。

但我只想在要混合的组件中使用
refreh
,这种方式会污染整个Vue实例。我明白了。不幸的是,我不知道单个组件的声明文件。
declare module 'vuelidate-error-extractor' {
   import { ValidationRule } from 'vuelidate/lib/validators';

   // eslint-disable-next-line @typescript-eslint/class-name-casing
   export class singleErrorExtractorMixin extends Vue {
      readonly events: any;

      readonly name: string;

      readonly isValid: boolean;

      readonly hasErrors: boolean;

      readonly preferredValidator: ValidationRule;
   }
}