vue项目使用typescript创建抽象类及其使用方式

 更新时间:2024年03月04日 09:00:44   作者:左直拳  
这篇文章主要介绍了vue项目使用typescript创建抽象类及其使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

如题,可以在vue项目使用typescript创建抽象类,然后使用这个抽象类。

通过TypeScript,可以在前端应用抽象类了。

抽象类的好处,可以同时满足继承和多态,好处多多。

以vue3为例:

1、创建抽象类

据说js类中,“#”开头的变量或方法,就是私有变量或方法(见拙作《vue项目中的类》)。

但是,现在TypeScript有private、protected、public等全套关键词。

export abstract class ListPage {
  #queryForm //查询框表单对象,例如:const queryForm = ref(),<el-form ref="queryForm">
  #myPageSetup //分页对象,例如:const myPageSetup = cloneDeep(pageSetup)

  constructor(queryForm, pageSetup) {
    this.#queryForm = queryForm
    this.#myPageSetup = pageSetup
  }

  //列表数据请求。抽象方法,子类必须实现
  abstract doQuery(): void

  //查询
  onSearch = () => {
    this.#myPageSetup.pageIndex = 1
    this.doQuery()
  }
  //重置
  onReset = () => {
    this.#queryForm.value.resetFields()
  }
  //跳转至指定页码
  onPageChange = (pageIndex) => {
    this.#myPageSetup.pageIndex = pageIndex
    this.doQuery()
  }
  //改变分页大小
  onPageSizeChange = (size) => {
    this.#myPageSetup.pageIndex = 1
    this.#myPageSetup.pageSize = size
    this.doQuery()
  }
  //排序
  onColumnSort = ({ prop, order }) => {
    this.#myPageSetup.order = order
    this.#myPageSetup.sort = prop
    this.doQuery()
  }
}

2、应用该抽象类

class MyListPage extends ListPage {
  constructor() {
    super(defaultQueryForm, myPageSetup) // 在派生类的构造函数中必须调用super()
  }

//实现抽象方法。async代表异步,基类中的没有声明是否异步,既可以异步,也可以不异步。
  doQuery = async () => {
	//巴拉巴拉巴拉
  }
}
const myListPage = new MyListPage()
myListPage.onSearch()

3、心得

现在前端跟后端越来越像了。再也不是以前那种相对简单的三剑客了。

本来吧,js广受欢迎,一个原因是它非常灵活,没有什么类型的限制,怎么写都可以。

现在引入了TypeScript,到处声明类型,神憎鬼厌。有什么好处呢?

难道声明了强类型后,没有类型转换,程序执行效率就提高了?

未必吧,浏览器好像不直接支持typescript,最终还是要转换成原生js才能执行吧。

这么说的话,所谓TypeScript也者,也不过是一种语法糖,让我们写代码时可以写这写那,假装在面向对象编程而已。

有没有跟我一样,觉得这样反而不方便的?

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue3新增时自动获取当前时间的操作方法

    Vue3新增时自动获取当前时间的操作方法

    这篇文章主要介绍了Vue3新增时自动获取当前时间的操作方法,本文通过实例代码图文相结合给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • vue实现水波涟漪效果的点击反馈指令

    vue实现水波涟漪效果的点击反馈指令

    鼠标移入时的小手、鼠标点击时按钮下压弹起的动画、触屏应用点击时的屏幕震动,这些效果也被统称为点击反馈,虽然看似是应用中的细枝末节,但是只要稍微投入一点点心思,带来的用户体验提升是十分明显的,这里作者为小伙伴们推荐一种作者最喜欢的点击反馈效果。
    2021-05-05
  • vue-cli项目根据线上环境分别打出测试包和生产包

    vue-cli项目根据线上环境分别打出测试包和生产包

    这篇文章主要介绍了vue-cli项目根据线上环境打出测试包和生产包的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • vue实现抖音时间转盘

    vue实现抖音时间转盘

    这篇文章主要为大家详细介绍了vue实现抖音时间转盘,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Vue自定义指令使用方法详解

    Vue自定义指令使用方法详解

    这篇文章主要为大家详细介绍了Vue自定义指令的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 从零开始Vue3数据交互之promise用法详解

    从零开始Vue3数据交互之promise用法详解

    这篇文章主要介绍了Axios的基本使用,包括异步编程的基础知识,如Promise的介绍、特点和基本用法,以及如何使用then、catch和async/await来处理异步操作,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • VUE实现分布式医疗挂号系统预约挂号首页步骤详情

    VUE实现分布式医疗挂号系统预约挂号首页步骤详情

    这篇文章主要为大家介绍了VUE实现分布式医疗挂号系统预约挂号首页步骤详情,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • 关于Vue v-on指令的使用

    关于Vue v-on指令的使用

    这篇文章主要介绍了关于Vue v-on指令的一些使用场景,比如监听事件、传入event参数、事件修饰符的一些场景,下面就来看看具体使用的方法吧,需要的朋友可以参考一下
    2021-10-10
  • Vue3计算属性和异步计算属性方式

    Vue3计算属性和异步计算属性方式

    这篇文章主要介绍了Vue3计算属性和异步计算属性方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue监听对象及对象属性问题

    vue监听对象及对象属性问题

    这篇文章主要介绍了vue监听对象及对象属性问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08

最新评论