如何在解构语法中使用断言?

Zhe*_*eng 11 typescript

在 Typescript 中,如何在解构中使用断言?

type StringOrNumber = string | number

const obj = {
  foo: 123 as StringOrNumber
}

const { foo } = obj
Run Code Online (Sandbox Code Playgroud)

我没有找到number在 const 上添加类型断言的便捷方法foo。两个解决方法是:

// A:
const { foo } = obj as { foo: number }

// B:
const { foo: foo2 } = obj

const foo = <number>foo2
Run Code Online (Sandbox Code Playgroud)

obj第一个是当 的类型是嵌套且复杂时重写 的类型的负担。第二个看起来很奇怪。我假设这样的语法:

const { <number>foo } = obj
Run Code Online (Sandbox Code Playgroud)

绝对可以帮助我们从嵌套和复杂的解构中断言类型。

wra*_*ger 5

根据文档,解构时无法正确转换类型。显然,除了您提供的方法之外,没有其他解决方法。