vue3+ts+better-scroll封装的scroll组件,定义接收的变量值类型应该是什么类型?

新手上路,请多包涵
<template>
  <div ref="wrapperRef">
    <slot></slot>
  </div>
</template>

<script setup lang="ts">
import { onMounted, ref } from 'vue'
import BScroll from '@better-scroll/core'
import ObserveDOM from '@better-scroll/observe-dom'
import MouseWheel from '@better-scroll/mouse-wheel'
import Pullup from '@better-scroll/pull-up'

BScroll.use(ObserveDOM)
BScroll.use(MouseWheel)
BScroll.use(Pullup)

const props = defineProps({
  probeType: { type: Number, default: 1 },
  click: { type: Boolean, default: true },
  eventPassthrough: { type: String, default: '' }
})
const emits = defineEmits(['scroll'])
const wrapperRef = ref<HTMLElement | string>('')
const scroll = ref<BScroll>()
// const scroll = ref<BScrollConstructor<{}> & PluginAPI>()
onMounted(() => {
  scroll.value = new BScroll(wrapperRef.value, {
    observeDOM: true,
    mouseWheel: {
      speed: 20,
      invert: false,
      easeTime: 300
    },
    pullUpLoad: true,
    ...props
  })
  // scroll.value
  if (props.probeType > 0) {
    scroll.value.on('scroll', (pos: { x: number; y: number }) => {
      emits('scroll', pos)
    })
  }
})

defineExpose({ scroll })
</script>

<style scoped></style>

一开始我定义scroll的类型为BScroll类型,但是在使用pull-up插件时,不能智能提示实例上的方法,比如finishPullUp...,我直接在onMounted函数中定义变量接收可以看到类型是BScrollConstructor<{}> & PluginAPI,但是在onMounted中的变量我没法暴露出去,那么还是得在外部定义变量接收,如果变量直接定义BScrollConstructor<{}> & PluginAPI这个类型又报类型错误,那么正确的类型应该是什么呢?

阅读 2.4k
1 个回答

你打印下你要定义的变量一般就能看见了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题