在模块的typescript中声明接口

在模块的typescript中声明接口,typescript,vue.js,Typescript,Vue.js,如何声明类型以便编译我的ts文件 我正在使用vue,我正在尝试创建一个混合:我正在使用: import Vue, {ComponentOptions, VueConstructor} from 'vue'; let mixin : ComponentOptions<Vue> = { computed: { logger() : Logger { console.log(this.$options._componentTag); } }, };

如何声明类型以便编译我的
ts
文件

我正在使用vue,我正在尝试创建一个混合:我正在使用:

import Vue, {ComponentOptions, VueConstructor} from 'vue';

let mixin : ComponentOptions<Vue> = {
  computed: {
    logger() : Logger {
      console.log(this.$options._componentTag);
    }
  },
};

尝试在上使用
vue属性装饰器。使用此库创建mixin非常简单:

import { Component, Vue } from "vue-property-decorator";

@Component
export default class BaseMixin extends Vue {
  check = false;

  someMethod() {
    this.check = true;
  }
}
然后您可以在组件中使用它:

import { Component, Mixins } from "vue-property-decorator";
import BaseMixin from "@/mixins/BaseMixin";

@Component
export default class MyComponent extends Mixins(BaseMixin) {
   mounted() {
     this.someMethod(); // someMethod is visible here
   }
}
组件选项 但是,如果您需要扩展
ComponentOptions
接口,这可能会对您有所帮助:
my_vue.d.ts


尝试在上使用
vue属性装饰器。使用此库创建mixin非常简单:

import { Component, Vue } from "vue-property-decorator";

@Component
export default class BaseMixin extends Vue {
  check = false;

  someMethod() {
    this.check = true;
  }
}
然后您可以在组件中使用它:

import { Component, Mixins } from "vue-property-decorator";
import BaseMixin from "@/mixins/BaseMixin";

@Component
export default class MyComponent extends Mixins(BaseMixin) {
   mounted() {
     this.someMethod(); // someMethod is visible here
   }
}
组件选项 但是,如果您需要扩展
ComponentOptions
接口,这可能会对您有所帮助:
my_vue.d.ts


您是否尝试将其用于全局混合?我使用
Vue.mixin(BaseMixin)
并收到一个长消息。我明白了,但似乎不起作用。我仍然得到一个声明模块在你的方式。我正在使用的是
vue属性装饰器
无法实现的“我惊吓”。如果您需要声明一些将在所有组件中使用的方法,那么最好使用vue?您知道ts拒绝编译的原因吗?如果您无法复制,我可以创建一个github示例或代码段。我假设
vue property decorator
的mixin具有vue期望的另一种类型。对于创建全局混合,您可以尝试我的意思是为什么
声明模块
不起作用。所以,如果某个模块像vue一样导出一个模块(这可能是vue之外的其他模块),并且我不能用
声明
覆盖内部类的接口。无论如何,这与vue无关,只与typescript本身有关。您是否尝试将其用于全局混合?我使用
Vue.mixin(BaseMixin)
并收到一个长消息。我明白了,但似乎不起作用。我仍然得到一个声明模块在你的方式。我正在使用的是
vue属性装饰器
无法实现的“我惊吓”。如果您需要声明一些将在所有组件中使用的方法,那么最好使用vue?您知道ts拒绝编译的原因吗?如果您无法复制,我可以创建一个github示例或代码段。我假设
vue property decorator
的mixin具有vue期望的另一种类型。对于创建全局混合,您可以尝试我的意思是为什么
声明模块
不起作用。所以,如果某个模块像vue一样导出一个模块(这可能是vue之外的其他模块),并且我不能用
声明
覆盖内部类的接口。无论如何,这与vue无关,只与typescript本身有关。
import { Component, Vue } from "vue-property-decorator";

@Component
export default class MyMixin extends Vue 
{
    check() {
        return this.$options._componentTag;
    }
}