TS2339: свойство 'xxx' не существует для типа 'MyComponent в vue -class-component - PullRequest
0 голосов
/ 28 января 2020

Кто-нибудь знает, как правильно рассказать TypeScript, как узнать о Prop type, который я получил на первом снимке?

  1. Этот один парень объявил Prop под названием engine. изображение 1
<script lang="ts">
 import Vue from 'vue';
 import { Component, Prop, Watch, Mixins } from 'vue-property-decorator';
 import pDebounce from 'p-debounce';

 // Define the props by using Vue's canonical way.
 export const FetcherProps = Vue.extend({
   props: {
     engine: Function
   }
 })
 // Use defined props by extending GreetingProps
 @Component
 class Fetcher extends FetcherProps {
   response: Array<any> | Promise<any> = [];
   fetch2: Function;

   // @Prop() engine!: Function;
   // @Prop({ default: null }) debounce!: null | number;
   // @Prop({ default: () => {} }) request!: Dictionary<any>;
   // @Prop({ default: true }) promisify!: boolean;

   get requestObject() {
     return { params: this.request };
   }
Здесь я расширяю компонент с первой картинки image 2
@Component({})
  class EmSearchEngine extends Fetcher {
(тот же компонент на картинке выше). Проблема в том, что TypeScript не может правильно определить тип двигателя image 3

    render(h: CreateElement) {
      return h(Fetcher, {
        props: {
          debounce: 300,
          promisify: false,
          engine: this.engine <-- "TS2339: Property 'engine' does not exist on type 'EmSearchEngine'.,
          request: {
            ...this.initialQuery,
            ...this.query,
            cancelToken: new CancelToken((cancel) => {
              abortSearch = cancel;
            })
          }

До этого я пытался использовать пример из папки примера в репозитории: https://github.com/vuejs/vue-class-component/blob/master/example/src/App.vue но это не помогло мне.

Что-то не так с моим кодом, или я явно должен объявить свойство engine class 'в EmSearchEngine компонент?

Большое спасибо заранее за вашу помощь. Оригинальный выпуск github: https://github.com/vuejs/vue-class-component/issues/391

...