web前端全系列 教程
1839个小节阅读:2244.4k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
provide 和 inject 通常会在不同的组件中运行。要正确地为注入的值标记类型,Vue 提供了一个 InjectionKey
接口,它是一个继承自 Symbol
的泛型类型,可以用来在提供者和消费者之间同步注入值的类型
xxxxxxxxxx
<script setup lang="ts">
import { provide } from "vue"
import type { InjectionKey } from "vue"
const key = Symbol() as InjectionKey<string>
provide(key,"itbaizhan")
</script>
建议将注入 key 的类型放在一个单独的文件中,这样它就可以被多个组件导入
xxxxxxxxxx
import type { InjectionKey } from "vue"
export const key = Symbol() as InjectionKey<string>
当使用字符串注入 key 时,注入值的类型是 unknown
,需要通过泛型参数显式声明
xxxxxxxxxx
<script setup lang="ts">
import { inject } from "vue"
import { key } from "./types/key"
console.log(inject<string>(key)) // 类型:string | undefined
</script>
注意注入的值仍然可以是 undefined
,因为无法保证提供者一定会在运行时 provide 这个值。
当提供了一个默认值后,这个 undefined
类型就可以被移除
xxxxxxxxxx
inject<string>(key,'默认值')
如果你确定该值将始终被提供,则还可以强制转换该值
xxxxxxxxxx
inject<string>(key) as string