打字稿如何进行对象解构赋值
Posted
技术标签:
【中文标题】打字稿如何进行对象解构赋值【英文标题】:typescript how to do object destructured assignment 【发布时间】:2019-09-18 15:52:22 【问题描述】:我有一些打字稿代码,如下所示:
transform( payload: object )
const count = 0, malfunctions = [] : count: number, malfunctions: Array<object> = payload;
打字稿编译器给我错误:
"error TS2322: Type 'object' is not assignable to type ' count: number; malfunctions: object[]; '."
现在我对 typescript 相当陌生,但在我看来,编译器告诉我:“你不能将对象类型 'payload' 分配给类型为 number 和 array 的解构变量。”
如果这是真的,那么我应该如何在 typescript 中进行解构赋值?
【问题讨论】:
在你的赋值语句右侧尝试=...payload
。
您到底想达到什么目的?您是否尝试提取属性count
和malfunctions
?
@jpavel - 这不起作用 - 打字稿似乎不允许对象休息参数
【参考方案1】:
我想通了-需要在参数中执行解构:
transform( count = 0, malfunctions = [] : count: number, malfunctions: Array<object> )
【讨论】:
您不必“在参数中执行解构”,您只需要有参数的类型。问题是object
不能被解构,因为它是一个模糊的类型。所以 transform( payload: count: number, malfunctions: Array<object> )
使用你的原始代码就可以了。
嗯,是的,我也可以这样做,但我仍然需要稍后解构对象或通过点符号访问对象上的属性,对吧?
你会像const count = 0, malfunctions = [] = payload
一样解构——问题还是object
的使用
当你说 'const count = 0, faults = [] = payload' - 这就是我的意思是'我以后仍然需要解构对象'
是的,您可以在参数分配或稍后进行解构...但无论如何,原始错误与此无关。以上是关于打字稿如何进行对象解构赋值的主要内容,如果未能解决你的问题,请参考以下文章