TS类型声明的方法之二

简介: TS类型声明的方法之二

为 emits 标注类型

<script setup lang="ts">
// 运行时
const emit = defineEmits(['change', 'update'])
// 基于类型
const emit = defineEmits<{
  (e: 'change', id: number): void
  (e: 'update', value: string): void
}>()
</script>
import { defineComponent } from 'vue'
export default defineComponent({
  emits: ['change'],
  setup(props, { emit }) {
    emit('change') // <-- 类型检查 / 自动补全
  }
})       

为 ref() 标注类型

默认推导类型

ref 会根据初始化时的值自动推导其类型:

import { ref } from 'vue'
 
// 推导出的类型:Ref<number>
 
const year = ref(2020)
 
// => TS Error: Type 'string' is not assignable to type 'number'.
 
year.value = '2020'
通过接口指定类型

有时我们可能想为 ref 内的值指定一个更复杂的类型,可以通过使用 Ref 这个接口:

import { ref } from 'vue'
 
import type { Ref } from 'vue'
 
const year: Ref<string | number> = ref('2020')
 
year.value = 2020 // 成功!
通过泛型指定类型

或者,在调用 ref() 时传入一个泛型参数,来覆盖默认的推导行为:

// 得到的类型:Ref<string | number>
 
const year = ref<string | number>('2020')
 
year.value = 2020 // 成功!

如果你指定了一个泛型参数但没有给出初始值,那么最后得到的就将是一个包含 undefined 的联合类型:

// 推导得到的类型:Ref<number | undefined>
 
const n = ref<number>()


相关文章
|
缓存 资源调度 算法
yarn的使用
yarn的使用
400 0
webp格式图片在html里不显示的解决方法
webp格式图片在html里不显示的解决方法
1608 0
webp格式图片在html里不显示的解决方法
|
编译器 Go 开发工具
常见问题之Golang——cgo: C compiler &quot;gcc&quot; not found: exec: &quot;gcc&quot;: executable file not found in %PATH%错误
本文主要是对我日常在使用golang时遇到的一些问题与解决方式进行的汇总,在此提供给大家便于排查一些遇到的问题,其中有更好的解决方案可在评论区留言。
1660 0
常见问题之Golang——cgo: C compiler &quot;gcc&quot; not found: exec: &quot;gcc&quot;: executable file not found in %PATH%错误
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
MCP、LLM与Agent:企业AI实施的新基建设计方案
MCP+LLM+Agent架构通过"大脑-神经网络-手脚"的协同机制,实现从数据贯通到自主执行的智能闭环。本文将深度解析该架构如何将产线排查效率提升5倍、让LLM专业术语识别准确率提升26%,并提供从技术选型到分层落地的实战指南,助力企业打造真正融入业务流的"数字员工"。通过协议标准化、动态规划与自愈执行的三重突破,推动AI从演示场景迈向核心业务深水区。
|
弹性计算 Ubuntu Linux
阿里云系统运维管理OOS一键安装宝塔面板,这个功能太牛了!
宝塔面板是实用的服务器管理工具,支持多种操作系统(如Ubuntu、CentOS等)。通过阿里云OOS可一键安装。安装前提包括ECS实例运行中且有公网,安全组需开放8888端口。安装步骤简单,进入ECS控制台选择预装应用并确认下单,完成后在控制台查看详情和登录信息。最后验证安装结果,确保能成功访问宝塔面板URL。
598 82
|
数据采集 存储 监控
数据驱动开发:如何将数据分析融入开发流程
【8月更文挑战第14天】数据驱动开发是一种高效、智能的软件开发方法论,它通过将数据分析深度融入开发流程中,实现了精准决策、提升效率和持续改进的目标。为了成功实施数据驱动开发,团队需要明确数据需求、设计合理的数据架构、集成数据收集工具、实施CI/CD流程、进行数据分析与决策支持以及建立反馈循环机制。同时,还需要应对数据质量、技术和组织与文化等挑战。通过不断努力和实践,团队可以逐步建立起完善的数据驱动开发体系,推动产品不断迭代升级和业务持续增长。
|
缓存 JavaScript 前端开发
|
网络协议 算法 网络性能优化
一文带你了解tcp协议
一文带你了解tcp协议
|
存储 算法 Linux
CTF—GIF文件格式、隐写方法及案例
CTF—GIF文件格式、隐写方法及案例
1110 0
|
存储 资源调度 JavaScript
pnpm、npm、yarn是什么?怎么选择?
pnpm、npm、yarn是什么?怎么选择?
836 2