Кто-нибудь знает, как правильно рассказать TypeScript, как узнать о Prop
type
, который я получил на первом снимке?
- Этот один парень объявил
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