javascript - 使用接口(interface)销毁对象

标签 javascript reactjs typescript javascript-objects object-destructuring

我有这个代码:

const {items} = this.props;

但是,我需要将接口(interface)设置为items常量

我不想这样做:

常量项目:ItemsInterface = this.props.items

可能吗?

最佳答案

正如 Oblosys 在他的评论中所述,首选方法应该是解构类型良好的源对象并依赖类型推断。

类型注解语法与解构语法交互笨拙且不方便。

不过,如果您真的想在解构表达式中指定一个类型,有几种方法。

  1. 最简单的方法是在表达式的右侧应用类型断言

    const {items} = <{items: ItemsInterface}>this.props;
    

    或者等价的

    const {items} = this.props as {items: ItemsInterface};
    

    当然这是冗长的,但它是清楚、正确和显而易见的。

  2. 也许更接近您的直觉,您可以像任何其他操作一样使用类型注释指定解构表达式的类型。

    const {items}: {items: ItemsInterface} = this.props;
    

    我个人觉得这很尴尬,而且有点难以阅读。类型注释被赋予未命名的表达式 {items}

  3. 如果您顺便在解构表达式中指定默认值,您实际上可以指定内联类型。

    const {items = <ItemsInterface>{}} = this.props;
    

或者等价的

    const {items = {} as ItemsInterface} = this.props;

在任何情况下,都无法避免重复名称 items,除非您使用默认值进行初始化。

我更喜欢第一个选项,因为更改现有值的类型更清晰,这里是 this.props,将断言应用于该值而不是在接收声明中添加一个类型注释,这里是items,因为后者没有向读者提供正在手动调整类型的直觉。

关于javascript - 使用接口(interface)销毁对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49678221/

相关文章:

javascript - 为什么即使在 Prop 对象更改后功能组件也不会重新渲染?

twitter-bootstrap - react / typescript : Parameter 'props' implicitly has an 'any' type error

javascript - 根据用户选择显示 Material ui TextField

javascript - 无法应对 navigator.geolocation 的异步性质

javascript - 如何使 React 多步骤表单与 React Router 一起工作?

javascript - React/Javascript - 在运行函数之前等待变量填充

javascript - Angular 2 选择选项(下拉)-如何获取更改值以便在函数中使用它?

Javascript 数组到对象的最佳方式

javascript - Firestore/Javascript : How to get a data from map field of a sub-document?

javascript - 需要滚动到 html 页面中嵌入的 PDF 中的特定行