在模块的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;
}
}