0Pricing
TypeScript Academy · 课时

解构中的默认值

安全地将默认值与类型注解结合起来。

解构中的默认值 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 4 节课。

填补空缺

解构默认值会在属性或元素缺失或为 undefined 时提供备用值。结合 TypeScript 的类型推断,它们让可选配置既方便又安全。

对象解构中的默认值

在绑定后写入 = value,即可为其提供备用值。如果属性不存在或为 undefined,就会改用该默认值。

const opts: { count?: number } = {}
const { count = 0 } = opts
console.log(count) // 0

默认值与可选属性

默认值与可选(?)属性配合得很好。默认值会排除 undefined 的情况,因此结果变量会是非可选类型。

interface Opts { retries?: number }
function connect(opts: Opts) {
  const { retries = 3 } = opts
  // retries is number, not number | undefined
  return retries * 2
}
console.log(connect({}))

默认值与推断类型

如果不添加注解,TypeScript 会根据默认值推断变量的类型。这里的 0 会使 count 成为 number。

const settings: { count?: number; label?: string } = { label: "hi" }
const { count = 0, label = "none" } = settings
console.log(count, label) // 0 hi

只有 undefined 会触发默认值

有一个细节需要注意:默认值只适用于 undefined,绝不会适用于 0、"" 或 null 等其他假值。这些值会原样保留。

const { x = 10 } = { x: 0 }
console.log(x) // 0, not 10 — 0 is not undefined
const { y = 10 } = { y: undefined as number | undefined }
console.log(y) // 10

函数参数中的默认值

解构参数默认值让可选选项变得简单。每个字段都可以直接在函数签名中拥有自己的备用值。

function draw({ x = 0, y = 0 }: { x?: number; y?: number }) {
  return x + "," + y
}
console.log(draw({ x: 5 })) // 5,0

为整个参数设置默认值

如果希望调用方可以完全省略参数对象,请将参数本身的默认值设为 {}。否则,在没有传入参数时调用函数会抛出错误。

function draw({ x = 0, y = 0 }: { x?: number; y?: number } = {}) {
  return x + "," + y
}
console.log(draw()) // 0,0

默认值与重命名

您可以在同一个绑定中同时重命名并设置默认值:先重命名,然后在新名称后添加默认值。

const { count: total = 0 } = { } as { count?: number }
console.log(total) // 0

计算所得的默认值

默认值可以是任何表达式,甚至可以引用前面绑定的变量。它会延迟计算,只有在实际缺少该值时才会求值。

function make({ width = 100, height = width }: { width?: number; height?: number } = {}) {
  return width + "x" + height
}
console.log(make({ width: 50 })) // 50x50

数组默认值回顾

默认值同样适用于数组解构:当某个位置的元素缺失或为 undefined 时,会为该位置应用默认值。

const [a = 1, b = 2, c = 3] = [10, undefined]
console.log(a, b, c) // 10 2 3

默认值发挥作用的场景

默认值非常适合选项对象:调用方只需指定关注的内容,函数会填充合理的备用值。默认值还会从推断类型中移除 undefined,让函数体更简单。

interface Config { debug?: boolean; level?: number }
const init = ({ debug = false, level = 1 }: Config = {}) => debug ? level : 0
console.log(init({ debug: true, level: 5 }))

快速检查

测试您对解构默认值的理解。

回顾

解构默认值(= fallback)只在值缺失或为 undefined 时生效,绝不会用于其他假值。它们会从可选属性类型中移除 undefined,可以由系统推断或手动添加注解,支持重命名,也可以引用前面绑定的变量。对于选项对象,请将参数默认设为 {},这样调用方就能完全省略它。

常见问题解答

「解构中的默认值」课时是免费的吗?

是的 — 「解构中的默认值」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 4 节课。

「解构中的默认值」这节课中我会学到什么?

安全地将默认值与类型注解结合起来。 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 TypeScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「解构中的默认值」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 TypeScript Academy 课中编写并运行代码吗?

能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 对象解构类型
  2. 数组与元组解构
  3. 解构中的默认值
  4. 嵌套解构模式
← 返回 TypeScript Academy