【发布时间】:2019-10-20 18:56:36
【问题描述】:
我正在使用 vue-cli-service 来构建我的 vuejs 应用程序。
构建成功,但在 webstorm IDE 中,我得到一些 TS2339 错误:
Test.vue:
<template>
<div>{{method()}}</div>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
@Component
export default class Test extends Vue {
public method(): string {
return 'hello';
}
}
</script>
Test.spec.ts:
import 'jest';
import {mount} from '@vue/test-utils';
import Test from '@/views/common/Test.vue';
describe('Test.vue', () => {
let wrapper: any;
beforeEach(() => {
wrapper = mount(Test);
});
test('test method call', () => {
const test = wrapper.find(Test).vm as Test;
expect(test.method()).toEqual('hello');
});
});
在 Test.spec.ts 中,我在编辑器和打字稿窗口中都收到此错误:
错误:(14, 21) TS2339:“Vue”类型上不存在属性“方法”。
但是测试没问题,所以test.method()在运行时解析成功。
【问题讨论】:
-
您是否缺少类型定义?
-
类定义不应该足够吗?您会在此处添加哪些额外定义?
-
你想用 'const value = new Test().value' 达到什么目的?看起来您正在尝试注入依赖项或在本地注册组件,但都没有按照您尝试的方式完成。
-
当然,这个例子没有任何意义,这只是一个简单的例子来说明问题。更一般地说,我有一个类实例,我想在这个对象上获取一个属性/调用一个方法。
-
如果您提供一个显示您实际尝试实现的目标的最小示例,而不是无意义的示例,您将节省大量时间。听起来像这样可能是重复的:stackoverflow.com/questions/46928713/…
标签: typescript vue.js vuejs2 vue-class-components