我有这个代码:
const {items} = this.props;
但是,我需要将接口(interface)设置为items
常量
我不想这样做:
常量项目:ItemsInterface = this.props.items
可能吗?
最佳答案
正如 Oblosys 在他的评论中所述,首选方法应该是解构类型良好的源对象并依赖类型推断。
类型注解语法与解构语法交互笨拙且不方便。
不过,如果您真的想在解构表达式中指定一个类型,有几种方法。
最简单的方法是在表达式的右侧应用类型断言
const {items} = <{items: ItemsInterface}>this.props;
或者等价的
const {items} = this.props as {items: ItemsInterface};
当然这是冗长的,但它是清楚、正确和显而易见的。
也许更接近您的直觉,您可以像任何其他操作一样使用类型注释指定解构表达式的类型。
const {items}: {items: ItemsInterface} = this.props;
我个人觉得这很尴尬,而且有点难以阅读。类型注释被赋予未命名的表达式
{items}
。如果您顺便在解构表达式中指定默认值,您实际上可以指定内联类型。
const {items = <ItemsInterface>{}} = this.props;
或者等价的
const {items = {} as ItemsInterface} = this.props;
在任何情况下,都无法避免重复名称 items
,除非您使用默认值进行初始化。
我更喜欢第一个选项,因为更改现有值的类型更清晰,这里是 this.props
,将断言应用于该值而不是在接收声明中添加一个类型注释,这里是items
,因为后者没有向读者提供正在手动调整类型的直觉。
关于javascript - 使用接口(interface)销毁对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49678221/