Добавьте их до звонка.
// tslint:disable-next-line
// @ts-ignore
Вы также можете объединить существующий интерфейс Test следующим образом:
const test = wrapper.find(Test).vm as Test & {method()};
Не сказать, что вы должны делать это на практике, но ваш код будет работать ...
правильный способ исправить это - augment
Vue's
определение, поэтому typescript
примет ваш метод. Но это должно происходить автоматически Vue. Включаете ли вы файл shims-vue.d.ts
. Вот где происходит волшебство машинописи?
https://vuejs.org/v2/guide/typescript.html
С учетом вышесказанного у меня возникли проблемы с использованием синтаксиса класса Vue, и мне пришлось вернуться к синтаксису oldschool, чтобы избежать жалоб на машинопись:
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
methods: {
method(): string {
return 'hello';
}
})
</script>
Файл shims - это то, как Vue дополняет себя вашими компонентами.
проставки-vue.d.ts
declare module '*.vue' {
import Vue from 'vue';
export default Vue;
Несколько экземпляров Vue
Иногда Vue
включается из нескольких источников, и это портит машинопись.
Попробуйте добавить это в файл tsconfig
.
{
"paths": {
"@/*": [
"src/*"
],
"vue/*": [
"node_modules/vue/*"
]
}
Мне иногда даже приходилось добавлять псевдоним webpack для этого (хотя это будет выпущенное здание, но не исправление вашей проблемы):
'vue$': path.resolve(__dirname, 'node_modules', 'vue/dist/vue.esm.js'),