You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何TypeScript无法解析对象解构中的赋值操作?

TypeScript解构赋值中的类型推导异常问题

先看这段代码:

interface Foo {
    a?: number
    b?: number
}

function foo(options?: Foo) {
    const {
        a, // <-- 此处报错
        b = a
    } = (options ?? {})

    return [a, b]
}

它会抛出如下错误:

‘a’隐式拥有类型‘any’,因为它没有类型注解且在自身初始化器中被直接或间接引用。

按逻辑来说,a的类型应该是number | undefined,为什么会出现这个错误?

但如果把foo函数改写成下面这样,就不会有任何错误:

function foo(options?: Foo) {
    const f = options ?? {}
    
    const {
        a,
        b = a
    } = f

    return [a, b]
}

这是为什么?这属于TypeScript的Bug吗?

内容的提问来源于stack exchange,提问作者TN.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:25:12