我正在使用 vue-class-component 并且我有一个导入的函数,我想将其用作组件方法的值。为了说明我想要实现的目标,假设我有一个文件 TestComponent.vue,它看起来像这样:
<template>
<div class="wrapper">
<div class="text">{{ helper() }}</div>
</div>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
import helper from './helper';
@Component({
name: 'TestComponent'
})
export default class TestComponent extends Vue {
someString = 'I want it to be shown';
helper = helper;
}
</script>
我的 helper.ts 文件是这样的:
export default function(this: any) {
return `${ this.someString } [ this text was added in helper function ]`;
}
问题是我不想this
在 helper.ts 中指定any
类型。我希望它是一种 TestComponent 类。但是当我输入这个时:
import TestComponent from './TestComponent.vue';
export default function(this: TestComponent) {
return `${ this.someString } [ this text was added in helper function ]`;
}
我有一个错误,提示“'Vue' 类型上不存在属性 'someString'”。我找到了解决方案。如果我将一个类定义放到一个单独的文件中,比如说 TestComponentClass.ts,然后在 TestComponent.vue 和 type 中导入它export default class TestComponent extends TestComponentClass {}
,我也可以在 helper.ts 中导入这个类并将其用作this
函数内的关键字类型。但这似乎太乏味了。
所以我的问题是:
- 有没有更好的方法来实现这一目标?
- @Component 装饰器实际上如何影响类的类型?我试图在官方文档中寻找答案,但它没有深入解释这个装饰器的实现。
提前致谢!