我在打字稿中有如下使用命名参数的方法
public foo({x, y, z , m , n} : {x:string, y: number, z: number, m?:string, n?:number}) {
}
参数m
和n
将从另一个类似的对象提供
const default = { m : 'M', n :10, o:6 }
现在,我想像下面那样调用foo,并且我希望添加默认参数而不在调用中显式传递它们。>
foo({x:'x', y: 5, z: 0})
所以我的问题是如何在呼叫前应用
default
主体中的foo
或在调用前以某种方式拦截foo
并应用default
public foo({x, y, z , m , n} = {x:string, y: number, z: number, m?:string, n?:number}) { // for example how to apply default here }
为简单起见,请注意,我减少了参数的数量
我也已经知道以下解决方案,我正在寻找更少样板代码的东西
public foo({x, y, z , m , n} = {x:string, y: number, z: number, m?:string, n?:number}) { if (!m) { m = default.m; } if (!n) { n = default.n; } }
或
foo({...default, x:'x', y: 5, z: 0 });
我在打字稿中有一种使用命名参数public foo({x,y,z,m,n}的方法,如下所示:{x:string,y:number,z:number,m?:string,n?:number }){}参数m和n将从...
如何合并和破坏函数内部的对象?
对于合并,您需要使用de-structure
使用合并。 default
分配在这里不起作用。仅当传递值时未定义对象时,默认分配才有效。因此,您需要将默认值与传递的值合并。
您可以仅在参数本身中添加默认值,如下所示: