解构中的默认值
安全地将默认值与类型注解结合起来。
解构中的默认值 是 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 反馈 — 无需本地设置。