Vue3 + TS

Vue2 与 Vue3 对比 

  • Composition API:  取代Options API(函数式编程思想、面向对象思想)函数式编程有哪些优势,在常用的库有什么应用,应用场景等;   通过函数组合组织逻辑,增强了代码的复用性和可读性。
  • TS 支持
  • 更小的体积
  •  性能提升:diff算法的优化(简单diff、双端diff、快速diff)最长递增子序列
  • Fragments和Teleport

Vue3 与 TS 结合优势

  • 类型安全
  • 自动推导
  • 更好的开发体验:自动补全和类型检查

TS 相关知识

  •  基本类型
    • number  string  boolean null undefined symbol
  • 联合类型
    • type Id = string | number
  • 交叉类型
    • type Person = { name: string } & { age: number }
  • 类型别名(自定义类型)
    • type Id = string | number
  • 接口
    • interface Person { name: string }
  • 泛型(使用的时候才知道类型)
    • function testFun<T>(arg: T) : T { return arg; }
  • 条件类型(三目运算符)
    • type IsString<T> = T extends string ? true : false
    • 注意:extends  继承 / 约束泛型 / 条件类型
  • 内置工具类型
    • // 类型复用
      // 用已有类型来派生新类型
      type Person = { name: string, age: number}
      
      type NamedPerson = Pick<Person, "name">
      // type NamedPeson = Omit<Person, "age">

  • 类型保护(通过判断类型来确定类型)
    • type Val = string | number;
      
      function isString(value: Val): value is string {
          return typeof value === 'string'
      }
              

Vue3 项目中使用 TS

  •   
    <script setup lang='ts'>
    // 宏定义 props 类型
    defineProps<{
        name: string;
        age: number
    }>()
    
    // 定义 emits 类型
    const Emits = defineEmits<{
        click:(e: MouseEvent) => void;
    }>()
    const emit = defineEmits<{
        (e:'update'): void
    }>()
    
    // 约束状态类型
    const isString = ref<boolean>(false);
    const person = ref<{name: string, age: number}>()
    </script> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值