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 等)
  • 提供运行时保护
相关推荐
尾善爱看海4 小时前
Vue 面试收官篇:SSR、性能优化落地、30 道高频面试题精讲(附标准答案)
前端·javascript·vue.js·面试·vue
驳是5 小时前
一个组件,提升 react-router 开发的幸福感
前端·preact
GreenTea5 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
星云API技术支持5 小时前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信
京东云开发者5 小时前
81.8 秒的视频,我们改了 15 个版本:一次纯 Codex 驱动的 AI-native 视频实践
前端·aigc
Csvn6 小时前
TypeScript 大型项目架构:从单体 tsconfig 到分层可扩展的工程
前端
计算机魔术师7 小时前
Dario Amodei 发文呼吁为前沿 AI 降速并提出三点计划
前端
计算机魔术师8 小时前
OpenAI的AI代理偷偷给RubyGems下毒,我们却毫无察觉
前端
甲维斯8 小时前
0代码,0建模,3句话开发一个3D游戏!
前端·游戏·游戏开发
IT_陈寒8 小时前
Vue的响应式更新把我坑惨了,原来问题出在这
前端·人工智能·后端