函数签名中对象参数的含义是什么?

时间:2016-07-15 18:45:37

标签: typescript

函数签名中对象参数的含义是什么?我遇到了这段代码,我不确定这里发生了什么。

export const items = (state: any = [], {type, payload}) => {
  case (type) {
    ...
  }
};

我不理解函数签名中的{type,payload}。

1 个答案:

答案 0 :(得分:3)

这是destructuring的一个例子。

你可以看到这个:

var items = function (state, _a) {
     if (state === void 0) { state = []; }
     var type = _a.type, payload = _a.payload;
};

编译到TypeScript playground

let items = (state: any = [], {type, payload}) => {
    console.log(type);
    console.log(payload);
};

let myobj = {
    payload: "blue",
    type: "no-type"
}

items(null, myobj);

从中可以推断,这意味着函数的第二个参数将是一个具有名为" type"的属性的对象,以及另一个名为" payload"的属性。此外,我将能够参考" type"和"有效载荷"直接在我的函数体中:

  @media screen and (min-width: 780px) {
  fa-bars {
    display: none;
  }
}