为何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.
相关产品推荐
相关产品推荐

