Vue3 中的工具类型总结

文章介绍了Vue3中的UnwrapRef工具类型,用于取消引用(ref)类型的嵌套,提供更好的类型推断,以及在实际代码中的应用示例。同时,也讲解了InjectionKey,这是一个在provide和inject间同步注入值的泛型类型,用于类型安全的依赖注入。
摘要由CSDN通过智能技术生成

Vue3 中的工具类型总结

1,UnwrapRef

是 Vue 3 中的一个类型工具,用于取消引用(ref)类型的嵌套。

1,作用

1,取消引用(ref)类型的嵌套。

当我们使用 ref 函数创建一个响应式数据时,会得到一个 Ref 对象,它是一个包装了原始值的对象。

使用 UnwrapRef 类型工具可以将 Ref 对象还原为其原始的值类型,以便在需要直接操作原始值的地方使用。

2,提供更好的类型推断。

可以帮助 TypeScript 更准确地推断和推导响应式数据的类型。在一些情况下,当需要在 TypeScript 中处理响应式数据时,可能会遇到类型推断的问题,而使用 UnwrapRef 可以帮助解决这些问题。

2,举例

1,取消 ref 响应。

import { ref, UnwrapRef } from 'vue';

const count = ref(0); // 创建一个响应式数据

type UnwrappedCount = UnwrapRef<typeof count>; // 使用 UnwrapRef 取消引用类型的嵌套

function increment(value: UnwrappedCount) {
  value++;
  console.log(value);
}

increment(count.value); // 输出: 1

在上述示例中,我们使用 UnwrapRef 来取消 count 响应式数据的引用类型的嵌套。这样,我们就可以在 increment 函数中直接操作原始的数值,而不需要使用 .value 访问 Ref 对象的值。

2,取消 computed 响应

import { ComputedRef, UnwrapRef } from 'vue';

type myContext = {
    auto: ComputedRef<string>;
    watch: (val: number, oldVal: number) => void;
}

type unContext = UnwrapRef<myContext>
/*
{
    auto: string;
    watch: (val: number, oldVal: number) => void;
}
*/

2,InjectionKey

Vue 提供的接口,它是一个继承自 Symbol 的泛型类型,可以用来在 provideinject 之间同步注入值的类型

举例:

import { provide, inject, computed, ref } from 'vue'
import type { InjectionKey, Ref } from 'vue'

// 表示注入值的类型是 ref<string>
const nsContextKey: InjectionKey<Ref<string | undefined>> = Symbol('nsContextKey')

const config = ref({ns: '可以是配置的 ns'})
const defaultNs = '下雪天的夏风'

provide(key, computed(() => config.value.ns))
inject(namespaceContextKey, ref(defaultNs))

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下雪天的夏风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值