使用typescript在reduce方法中使用传播语法进行解构

问题描述

这是我的示例,它使用别名工作。下面的示例:'aliasCatch'

通过打字稿验证

export type TProcessResponseFunc = (error: TError,stdout: TSTDOut,stderr: TSTDOut) => void;

export interface IObjCMD {
  msg?: string;
  cmd?: string;
  func?: (fn: TProcessResponseFunc) => void;
  catch?: IObjCMD[];
}

const shallowCloneArrObjCMD = (arrNext: IObjCMD[]) => 
  arrNext.reduce((accum,current) => {
    let objCMD: IObjCMD = current;
    if (current.catch) {
      const { ...rest,catch: aliasCatch} = current;
      const arrCatch: IObjCMD[] = aliasCatch ? shallowCloneArrObjCMD(aliasCatch) : [];
      objCMD = { ...rest,catch: arrCatch};
    }
    accum.push({ ...objCMD });
    return accum;
  },[] as IObjCMD[]);

如果我替换别名以直接访问已分解的项目,即在下面的示例中捕获,那么到处都会出错:

打字稿验证失败

const shallowCloneArrObjCMD = (arrNext: IObjCMD[]) => 
  arrNext.reduce((accum,catch } = current;
      const arrCatch: IObjCMD[] = catch ? shallowCloneArrObjCMD(catch) : [];
      objCMD = { ...rest,catch};
    }
    accum.push({ ...objCMD });
    return accum;
  },[] as IObjCMD[]);

const {...休息,抓住} =当前; -在花括号末尾给了我错误:期望值:这会破坏其余的代码

我能想到的唯一原因是因为变量“ catch”可能未定义,如在接口中声明的那样。因此,将其分配给变量/别名是别名,从而绕过了对变量立即具有值的需求。

对此进行一些澄清将很有帮助。谢谢

解决方法

docker run -it -v $(pwd)/out:/out -v $(pwd)/.cache:/.cache -v $(pwd)/log:/log employer/test:1.0.0;reserved word。您不能将其用作变量名。 from __future__ import absolute_import # Standard import os import sys # 3rd Party import debugpy debugpy.listen(5678) debugpy.wait_for_client() # 1st Party. NOTE: All source files are in /src,so we can add that path here for testing # and batch import all integrations files. Not very clean however sys.path.insert(0,os.path.join('/','src')) import integrations as ints 很好,但是catch不好。

我建议完全避免使用current.catch(以及其他保留字,例如const { ...rest,catch } = currentcatch)作为属性名称。如果不能,则可能需要使用注释来告诉您的短毛猫不要坚持解构:

delete

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...