ES6 / TS:函数调用中的对象分解

时间:2019-04-14 12:43:13

标签: javascript typescript ecmascript-6

在功能调用中实现对象分解的巧妙的ES6 + / TS速记是什么?

让我们假设一个被广泛使用并且不能更改其签名的Javascript函数

const foo = (b, a) => console.log(b, a);
foo(66,55);                  // 66, 55

还有一个用于为调用参数提供值的对象

const o = {a: 55, b: 66 };
foo(o.b, o.a);               // 66, 55       <-- can we find a short-hand ?    

有些电话没有击中目标

    foo(...Object.values(o)) // 55, 66 (no, JS object keys are unordered by definition)
    foo(...o);               // TypeError (short, but not valid, illustration only)
    foo(({b, a} = o));       // {a: 55, b: 66} undefined (no error, but we want 66, 55)

1 个答案:

答案 0 :(得分:0)

如果您无法更改函数的签名, 那么您必须按正确的顺序用每个参数调用它。

由于地图没有任何顺序,因此对象解构是不可能的。

您可以通过应用进行类似操作:

df[df.col==True]

但是不能保证值的顺序。

PEP 8: comparison to True should be 'if cond is True:' or 'if cond:'

因此,没有任何机灵方式。