当前位置: 首页 > news >正文

vue3 里的 ts 类型工具函数

目录

  • 前言
  • 一、PropType\<T>
  • 二、MaybeRef\<T>
  • 三、MaybeRefOrGetter\<T>
  • 四、ExtractPropTypes\<T>
  • 五、ExtractPublicPropTypes\<T>
  • 六、ComponentCustomProperties
  • 七、ComponentCustomOptions
  • 八、ComponentCustomProps
  • 九、CSSProperties

前言

相关 API 源码

一、PropType<T>

用于在用运行时 props 声明时给一个 prop 标注更复杂的类型定义。

示例:

import type { PropType } from 'vue'interface Book {title: stringauthor: stringyear: number
}export default {props: {book: {// 提供一个比 `Object` 更具体的类型type: Object as PropType<Book>,required: true}}
}

二、MaybeRef<T>

T | Ref 的别名。对于标注组合式函数的参数很有用。

三、MaybeRefOrGetter<T>

T | Ref | (() => T) 的别名。对于标注组合式函数的参数很有用。

四、ExtractPropTypes<T>

从运行时的 props 选项对象中提取 props 类型。提取到的类型是面向内部的,也就是说组件接收到的是解析后的 props。这意味着 boolean 类型的 props 和带有默认值的 props 总是一个定义的值,即使它们不是必需的。

要提取面向外部的 props,即父组件允许传递的 props,请使用 ExtractPublicPropTypes。

示例:

const propsOptions = {foo: String,bar: Boolean,baz: {type: Number,required: true},qux: {type: Number,default: 1}
} as consttype Props = ExtractPropTypes<typeof propsOptions>
// {
//   foo?: string,
//   bar: boolean,
//   baz: number,
//   qux: number
// }

五、ExtractPublicPropTypes<T>

从运行时的 props 选项对象中提取 prop。提取的类型是面向外部的,即父组件允许传递的 props。

示例:

const propsOptions = {foo: String,bar: Boolean,baz: {type: Number,required: true},qux: {type: Number,default: 1}
} as consttype Props = ExtractPublicPropTypes<typeof propsOptions>
// {
//   foo?: string,
//   bar?: boolean,
//   baz: number,
//   qux?: number
// }

六、ComponentCustomProperties

用于增强组件实例类型以支持自定义全局属性。

示例:

import axios from 'axios'declare module 'vue' {interface ComponentCustomProperties {$http: typeof axios$translate: (key: string) => string}
}

七、ComponentCustomOptions

用来扩展组件选项类型以支持自定义选项。

示例:

import { Route } from 'vue-router'declare module 'vue' {interface ComponentCustomOptions {beforeRouteEnter?(to: any, from: any, next: () => void): void}
}

八、ComponentCustomProps

用于扩展全局可用的 TSX props,以便在 TSX 元素上使用没有在组件选项上定义过的 props。

示例:

declare module 'vue' {interface ComponentCustomProps {hello?: string}
}export {}

九、CSSProperties

用于扩展在样式属性绑定上允许的值的类型。

示例:

declare module 'vue' {interface CSSProperties {[key: `--${string}`]: string}
}
<div style={ { '--bg-color': 'blue' } }>
<div :style="{ '--bg-color': 'blue' }"></div>

【注意】类型增强必须被放置在一个模块 .ts 或 .d.ts 文件中。查看类型增强指南了解更多细节。

【拓展】*SFC <style> 标签支持通过 v-bind CSS 函数来链接 CSS 值与组件状态。这允许在没有类型扩展的情况下自定义属性。*具体请参见CSS 中的 v-bind()。




【参考文章】
vue - TypeScript 工具类型

http://www.lryc.cn/news/274723.html

相关文章:

  • 【SpringCloud】之远程消费(进阶使用)
  • 自然语言处理24-T5模型的介绍与训练过程,利用简单构造数据训练微调该模型,体验整个过程
  • CISSP 第5章 保护资产的安全
  • docker安装-在linux下的安装步骤
  • 在Uniapp中使用Echarts创建可视化图表
  • 基于python的leetcode算法介绍之动态规划
  • 通信原理期末复习——计算大题(一)
  • 【萤火虫系列教程】2/5-Adobe Firefly 文字​生成​图像
  • JDK 11:崭新特性解析
  • leetcode.在链表中插入最大公约数
  • 云原生学习系列之基础环境准备(单节点安装kubernetes)
  • 【数据结构】二叉树的概念及堆
  • 美年大健康黄伟:从选型到迁移,一个月升级核心数据库
  • OpenHarmony应用构建工具Hvigor的构建流程
  • ChatGPT在金融财务领域的10种应用方法
  • 全程云OA ajax.ashx SQL注入漏洞复现
  • VMware 安装 macOS虚拟机(附工具包)
  • Tomcat与Servlet是什么关系
  • C++11_右值引用
  • C#使用条件语句判断用户登录身份
  • 在VM下使用Composer完成快照方式的软件制作
  • YOLOv5改进 | Neck篇 | 利用Damo-YOLO的RepGFPN改进特征融合层
  • 设计模式——最全梳理,最好理解
  • 外包干了4个月,技术退步明显了...
  • rust 注释文档生成 cargo doc
  • 大语言模型(LLM)框架及微调 (Fine Tuning)
  • 速盾高防ip:专业防御ddos
  • 第5章-第8节-Java面向对象中的内部类
  • 首次引入大模型!Bert-vits2-Extra中文特化版40秒素材复刻巫师3叶奈法
  • 从零学Java - 接口