Обратите внимание, что для функции resetData
требуется параметр Vue Instance
. В этом случае Vue
импортируется из пакета "vue"
и используется как тип
import Vue from "vue";
export function resetData(vm: Vue) { ... }
Vue. объект имеет $data
и $options
параметры, как и ожидалось.
Оставшаяся проблема состоит в том, чтобы узнать, что содержит объект $options.data
Когда data
является неизвестным типом, но мы используем его как функцию, другими словами: ()=>void
. В противном случае это вызовет синтаксическую ошибку.
Object.assign(vm.$data, (vm.$options.data as ()=>void).call(vm));
Окончательный код без ошибок компиляции будет выглядеть так:
import Vue from "vue";
export function resetData(vm: Vue) {
Object.assign(vm.$data, (vm.$options.data as ()=>void).call(vm));
}
Код становится немного многословным, но теперь он довольно трудоемкийсобственный набор текста