对象解构中的类型

新手上路,请多包涵

这个

const { foo: IFoo[] } = bar;

和这个

const { foo: Array<IFoo> } = bar;

会合理地导致错误。

和这个

const { foo: TFoo } = bar;

只会破坏 TFoo 属性。

如何为解构对象属性指定类型?

原文由 Estus Flask 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 450
2 个回答

事实证明,可以在 : 之后为整个解构模式指定类型:

 const {foo}: {foo: IFoo[]} = bar;

这实际上并不比普通的旧

const foo: IFoo[] = bar.foo;

原文由 artem 发布,翻译遵循 CC BY-SA 3.0 许可协议

NextJS 打字稿示例

我有这样的场景:

 const { _id } = req.query
if (_id.substr(2)) { 🚫
 ...
}

其中 req.query 的类型如下

type ParsedUrlQuery = { [key: string]: string | string[] }

所以这样做有效:

 const { _id } = req.query as { _id: string }
if (_id.substr(2)) { 🆗
 ...
}

具有讽刺意味的是,Typescript 是正确的,我应该这样做:

 const _id = String(req.query._id) ✅

原文由 King Friday 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进