泛型在 vue3.0中与reactive的使用

泛型在 vue3.0中与reactive的使用

RT 最近在学习vue3.0以及TS记录一下在中突然明白过来的坑

遇见场景,我在reactive中的dropdown这个参数默认给一个值为null,当我想在使用过程中给他一个特定的类型.最开始想的是给一个联合类型 number | string | null 显然这样是不正确的 代码如下:

interface Data {
  isShow:boolean,
  dropdown:number | null
}

  setup () {
    const data:Data = reactive({
      isShow: false,
      dropdown: null 
    })
  
    const methods = {
      handleDropDownShow: ():void => {
        data.isShow = !data.isShow
      }
    }
    const toRefsData = toRefs(data)
    return {
      ...toRefsData,
      ...methods
    }
  }

显然这样是不对的 虽然可以通过判断来获取其中的类型,但是如果我这个类型是个其他的呢 string, boolean, HTMLElement…等等类型,这个时候就可以使用泛型来规范参数了

interface Data<T> {
  isShow:boolean,
  dropdown:T | null
}
  setup () {
    const data:Data<HTMLElement> = reactive({
      isShow: false,
      dropdown: null // 当想要快速获取ref的元素的时候,可以直接取这个名字 上面的ref也取这个名字就可以了
    })
    const methods = {
      handleDropDownShow: ():void => {
        data.isShow = !data.isShow
      },
      handleClick (e:MouseEvent) {
        console.log(e)
           // data.dropdown = '123' // error TS2322: Type '"123"' is not assignable to type 'HTMLElement | null'.
        console.log(data.dropdown)
      }
    }
    const toRefsData = toRefs(data)
    return {
      ...toRefsData,
      ...methods
    }
  }

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TypeScriptVue 3.0是一种非常强大的组合,可以帮助我们开发可维护和可扩展的应用程序。使用TypeScript来编写Vue 3.0应用程序时,我们可以获得以下几个方面的优势: 1. 类型检查:TypeScript提供了静态类型检查,可以在编译时捕获错误和潜在的问题。这有助于减少在运行时出现的错误,并提供更好的代码智能提示和自动补全。 2. 增强的IDE支持:由于TypeScript具有明确的类型信息,IDE可以提供更好的代码补全、跳转和重构支持。这样可以提高代码编写的效率和准确性。 3. 更好的代码可读性和维护性:TypeScript强制使用类型注解,提供了更清晰的代码结构和文档。这使得代码更易读和可维护,特别是在团队开发。 在使用TypeScript编写Vue 3.0应用程序时,我们需要做以下几个步骤: 1. 安装Vue 3.0:可以使用npm或yarn安装Vue 3.0。 2. 创建Vue组件:使用TypeScript编写Vue组件时,我们可以使用类语法来定义组件。通过为组件添加装饰器`@Component`和指定类型注解,我们可以指定组件的属性、方法和生命周期钩子等信息。 3. 使用类型定义:我们可以使用interface或type关键字来定义类型。这样可以为组件的属性和方法指定参数类型和返回类型等信息。 4. 使用TypeScript提供的语言特性:我们可以使用TypeScript提供的类、泛型、模块化等语言特性来编写可重用和高效的代码。 5. 配置TypeScript编译器:需要配置TypeScript编译器的选项,例如指定目标浏览器、模块系统和编译目录等。 通过以上步骤,我们可以充分发挥TypeScriptVue 3.0的优势,编写类型安全、可读性高和易于维护的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值