【发布时间】:2021-06-28 15:13:18
【问题描述】:
我正在使用 Vue 的组合 API(在 Vue.js 3 中)并主要在 setup() 中构建我的组件逻辑。虽然accessing my own props 通过setup(props) 直截了当,但我无法以类型安全的方式将此处定义为methods 的函数公开。
以下工作,但我需要任意转换,因为没有暴露给 TypeScript 的方法接口。
<!-- MyComponent.vue -->
<script lang='ts'>
// ...
export default defineComponent({
setup() {
// ...
return {
publicFunction: async (): Promise<void> => { /* ... */ };
}
}
});
</script>
<!-- AppComponent.vue -->
<template>
<MyComponent ref="my"/>
</template>
<script lang='ts'>
export default defineComponent({
async setup() {
const my = ref();
async func() {
await (my.value as any).publicFunction(); // <-- gross!
}
return { my, func };
}
});
</script>
在methods 中定义我的函数不是一种选择,因为那样的话,我将无法从设置中访问它。
【问题讨论】:
标签: typescript vuejs3 vue-composition-api