Javascript 如何为vue声明JS mixin?
我正在用typescript编写一个vue项目,我想使用由javascript编写的第三部分库中的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
.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;
}
}