Как я могу использовать и базовый класс, и миксин с vue-class-component?
Связывание функций из миксина непосредственно в шаблоне работает нормально, но попытка использовать эти функции в коде машинописного текста вызовет ошибку при компиляции.
Насколько я понимаю, чтобы использовать миксины, вы должны расширять их:
class MyComp extends mixins(MixinA, MixinB)
К сожалению, у меня уже есть базовый класс, так что это не вариант. Вот код, который у меня есть ... есть ли способ сделать это с помощью vue-class-component?
// mixin
@Component
export default class DownloadService extends Vue {
public downloadModel(id: string) {
alert('Downloading.');
}
}
// Base class
@Component({
props: {
id: String
}
})
export default class BaseCard extends Vue {
id: string;
protected delete() {
alert('Deleted');
}
}
// Child class
@Component({
props: {
id: String,
disabled: Boolean,
},
mixins: [DownloadService],
})
export default class ItemCard extends BaseCard {
protected clicked() {
// Causes error = S2339: Property 'downloadModel' does not exist on type 'ItemCard'.
this.downloadModel(this.id);
}
}
Обратите внимание, что я могу использовать this при необходимости, что будет работать, но это кажется проблематичным, если мне придется делать это повсюду:
protected clicked() {
// Ideally shouldn't have to do this casting everywhere.
(<DownloadService><any>this).downloadModel(this.id);
}