我正在构建一个Vue项目,以学习Vue和TypeScript。我选择了该项目的大量静态数据,以作为Vue插件提供给组件,从而为Vue原型添加了一个属性。
import _Vue from 'vue';
export default function myPlugin(Vue: typeof _Vue): void {
Vue.prototype.$myPlugin = { one: 1, two: 2 };
}
Run Code Online (Sandbox Code Playgroud)
我遵循Peter Kuhn在帖子中的建议,在test-plugin.d.ts文件中定义了属性类型。
import Vue from 'vue';
declare module 'vue/types/vue' {
interface Vue {
$myPlugin: object;
}
}
Run Code Online (Sandbox Code Playgroud)
最后,我import和use()插件。
import Vue from 'vue';
import App from './App.vue';
import MyPlugin from './test-plugin';
Vue.use(MyPlugin);
new Vue({
render: (h) => h(App),
}).$mount('#app');
Run Code Online (Sandbox Code Playgroud)
但是,当我在单文件Vue组件中引用该属性时,vscode和TypeScript编译器均会引发该属性不存在的错误。
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({ …Run Code Online (Sandbox Code Playgroud)