首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将javascript对象作为参数传递给函数类型的等效对象

将javascript对象作为参数传递给函数类型的等效对象
EN

Stack Overflow用户
提问于 2019-06-17 22:16:21
回答 2查看 3.9K关注 0票数 2

我试图更好地理解这个示例中的代码:https://codesandbox.io/s/r5n96yvwnm

所以这里有这个函数(第9-11行):

代码语言:javascript
运行
复制
function MyCell({ value, columnProps: { rest: { someFunc } } }) {
  return <a href="#" onClick={someFunc}>{value}</a>
}

它是什么结构,有没有可能很容易地把它翻译成Typescript?我的意思是,我可以继续创建一个带有所有需要的道具的typescript界面,但我想知道,是否有更短的方法来做到这一点。我从来没有见过这样的结构,所以任何有更多解释的链接都很感谢。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-17 22:24:10

代码语言:javascript
运行
复制
function MyCell({ value, columnProps: { rest: { someFunc } } }) {

这一部分是使用destructuring来提取对象的属性。等同于:

代码语言:javascript
运行
复制
function MyCell(props) {
  const value = props.value;
  const columnProps = props.columnProps;
  const rest = columnProps.rest;
  const someFunc = rest.someFunc;

用typescript做这件事看起来像这样(我猜是界面中的一些类型):

代码语言:javascript
运行
复制
interface MyCellProps {
  value: number;
  columnProps: {
    rest: {
      someFunc: () => void;
    }
  }
}

function MyCell: React.FC<MyCellProps>({ value, columnProps: { rest: { someFunc } } }) {
   return <a href="#" onClick={someFunc}>{value}</a>
}
票数 2
EN

Stack Overflow用户

发布于 2019-06-17 22:25:22

听起来参数把你搞糊涂了。MyCell是一个只接受一个参数的函数。该参数应该是具有valuecolumnProps属性的对象。columnProps也应该是一个具有rest属性的对象。与prop someFunc一样,rest也被认为是一个obj。

这称为object destructuring,在参数中使用它的特定情况下,称为unpacking (mdn)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56633202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档