如何在es6中实现Nullable功能?我需要支持我以前的同事的源代码,他使用了过多的es6解构功能.像这样的东西,每个地方:
dispatch(
loadImports(response.items.map(({ importRecord: { ['import']: importId } }) => importId))
)
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我可能会收到TypeError: Cannot read property 'import' of null错误.
我不想将整个结构重写为常规条件.或者如果没有,如何处理它们,而不重写?
UPD:
同事的预期版本:https: //jsbin.com/fesewiy/edit?js,console
想象一下,我有一个数组集合$items,并removeItem在我的SomeEntity实体类中实现了一个方法,
public function removeItem(Item $item)
{
$this->items->removeElement($item);
return $this;
}
Run Code Online (Sandbox Code Playgroud)
以及接收 PATCH 请求的控制器操作:
public function patchAction(Request $request, SomeEntity $entity) {
$form = ...;
$form->handleRequest($request);
if ($form->isValid()) {
...
$this->get('doctrine.orm.entity_manager')->flush();
return $entity;
}
return $form;
}
Run Code Online (Sandbox Code Playgroud)
想象一下,SomeEntity类的实例将项目保存为[0 => {ITEM}, 1 => {ITEM}, 2 => {ITEM}, 3 => {ITEM}](对象的索引数组)。如果您以 JSON 格式向前端项目中getAction的SomeEntity对象发送请求并接收该对象,则对象中这些项目的类型将是对象的索引数组(您可以使用数组方法对其进行迭代),但是如果您删除一个或其中更多来自具有 PATCH 方法的对象并接收 JSON 响应,您将获得一个包含对象的 Object 类型,因为在 PATCH 请求之后某些键已被删除,并且响应中 SomeEntity 类的对象不再包含索引数组,而是会有一个对象的对象。这是因为,当您将数组转换为 json 对象时,您会得到两种不同的结果
此时我正在通过修改(手动重新创建元素)removeItem实体类中的现有方法来解决这个问题,如下所示: …