使用接口销毁对象
destruct object with interface
我有这个代码:
const {items} = this.props;
但是,我需要将接口设置为 items
常量
我不想这样做:
const 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}
.
如果你是顺便在解构表达式中指定了一个默认值,实际上你可以指定类型inline .
const {items = <ItemsInterface>{}} = this.props;
或等效
const {items = {} as ItemsInterface} = this.props;
在任何情况下,都无法避免重复名称 items
,除非您使用默认值进行初始化。
我更喜欢第一个选项,因为更改现有值的类型更清晰,这里 this.props
,对该值应用 断言 比在接收声明中添加一个类型 annotation,这里是 items
,因为后者没有向 reader 提供手动调整类型的直觉。
我有这个代码:
const {items} = this.props;
但是,我需要将接口设置为 items
常量
我不想这样做:
const 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}
.如果你是顺便在解构表达式中指定了一个默认值,实际上你可以指定类型inline .
const {items = <ItemsInterface>{}} = this.props;
或等效
const {items = {} as ItemsInterface} = this.props;
在任何情况下,都无法避免重复名称 items
,除非您使用默认值进行初始化。
我更喜欢第一个选项,因为更改现有值的类型更清晰,这里 this.props
,对该值应用 断言 比在接收声明中添加一个类型 annotation,这里是 items
,因为后者没有向 reader 提供手动调整类型的直觉。