如何解决使用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[]);
我能想到的唯一原因是因为变量“ 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 } = current
或catch
)作为属性名称。如果不能,则可能需要使用注释来告诉您的短毛猫不要坚持解构:
delete
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。