使用依赖于其他变量的变元进行销毁是否可能?

时间:2020-02-26 19:22:06

标签: javascript typescript ecmascript-6

是否可以在一个属性依赖于另一个属性的接口中使用解构? 我的论据如下:

interface PropsVariationA {
  functionToExecute?: () => void;
  executeExtraFunction: true;
}

interface PropsVariationB {
  executeExtraFunction: false;
}

type Props = PropsVariationA | PropsVariationB;

因此,当我尝试使用它进行销毁时,我(显然)会收到错误消息:

function SomeFunctionWithDestructuring({
  executeExtraFunction,
  functionToExecute = () => {} // Error: property 'functionToExecute' doesnt exist on type 'Props'
}: Props) {
  if (executeExtraFunction) functionToExecute();
  return null;
}

查看此demo

我设法使其在不破坏的情况下正常工作,但我想知道是否有办法。

1 个答案:

答案 0 :(得分:0)

如果在PropsVariationB中将functionToExecute设置为undefined,那么它将起作用:

hello="this is a value"
this=hello[2::2]
print(this)`