Vue3项目一些语法

defineProps、withDefaults

1. defineProps

Vue 3 提供的宏,用于在 <script setup> 中定义组件接收的 props

  • 括号内的泛型 <{}> 指定了 props 的类型结构

例子:

复制代码
const props = withDefaults(defineProps<{ active?: boolean }>(), { active: false });

意思说明:

这行代码创建了一个 props 对象,其中:

  • 如果父组件传递了 active 属性,则使用传递的值
  • 如果父组件未传递 active 属性,则默认值为 false
  • 在组件内部通过 props.active 访问该属性值

2. 类型定义 { active?: boolean }

active - 属性名称

  • ? - 表示可选属性(可以不传递)
  • boolean - 属性的数据类型为布尔值

3.withDefaults

  • 为 props 设置默认值
  • 第二个参数 { active: false } 指定 active 属性的默认值为 false

4.Vue2.0中的prop语法

复制代码
export default {
  props: {
    active: {
      type: Boolean,
      default: false
    }
  }
}

Record 类型 -TypeScript内置的工具类型

复制代码
const PAYMENT_COLORS: Record<string, string> = {
  a: "#faad14",
  b: "#000000",
  c: "#1890FF",
  d: "#07c160",
  all: "#F56C6C"
};

语法结构

Record<K, T>

  • K - 键(key)的类型
  • T - 值(value)的类型

作用:

  • 定义一个对象,键为字符串类型,值也为字符串类型
  • 提供类型安全,确保对象结构符合预期
  • 在访问对象属性时提供类型检查

as const - TypeScript 的常量断言

代码

没使用as const

复制代码
const SERIES_KEYS = ["type1", "type2", "type2", "type3", "type4"];
// 类型推断为: string[]
// 可以修改数组、添加元素等

使用as const

复制代码
const SERIES_KEYS = ["type1", "type2", "type3", "type4", "type5"] as const;
//类型推断为: readonly

作用:

1. 类型更精确

  • 每个元素都被视为字面量类型(literal type)
  • 不是宽化的 string 类型,而是具体的值类型

2. 数组变为只读

  • 数组不可修改(不能 push、pop、splice 等)
  • 提供运行时保护
相关推荐
光影少年2 分钟前
RN的Fabric 渲染流程
运维·前端·javascript·react native·react.js·fabric
烬羽20 分钟前
《React Router 受保护路由的 3 个坑,第 2 个 90% 的人都踩过》
react.js·性能优化·全栈
__zRainy__39 分钟前
React开始:直接在网站中使用React.js
前端·react.js·前端框架
用户059540174461 小时前
大模型长记忆评测踩坑实录:2000条错位记忆,让我排查了整整3小时
前端·css
码林鼠1 小时前
webpack的基本配置
前端·webpack·node.js
用户938515635072 小时前
React Router 进阶:路由守卫、登录鉴权与状态传递
前端·javascript·全栈
kyriewen2 小时前
我重写了自己用了两年的防抖节流Hook——发现里面藏着3个隐藏bug
前端·javascript·面试
阿祖zu2 小时前
芝士就是力量!开源私有化部署与 GitHub 双向同步的个人知识笔记 App
前端·后端·ios
漂流瓶jz2 小时前
Webpack开发环境:观察模式/webpack-dev-server/HMR热更新
前端·javascript·webpack
IT_陈寒2 小时前
SpringBoot自动配置失效?这个隐藏配置坑了我一整晚
前端·人工智能·后端