如何以优雅的方式填充缺少的对象参数



我在使用初始参数时遇到问题(我不确定是否有typescript解决方案,或者这只是一个JavaScript问题,所以我向您展示与您等效的JavaScript(:

const helloWorldWithOptions = (options = { a:1, b:2 } ) => {
console.log("Hello World!")
};

使用功能时:

helloWorldWithOptions( {a:4} );

Typescript说我在使用函数时缺少对象键b。我所期望的是js/ts用初始参数填充缺失的值。如果已经有了最先进的技术,请告诉我。

您可以使用Partial类型和...排列来将默认值与调用方的覆盖相结合。

TS游乐场

const defaults = { a: 1, b: 2 };
// Could use a named type instead of `typeof defaults` too.
const helloWorldWithOptions = (options: Partial<typeof defaults> = {}) => {
const mergedOptions = { ...defaults, ...options };
console.log(mergedOptions);
};
helloWorldWithOptions({ a: 3 });

无论何时声明函数,都可以指定默认值:

function aFunction({a = 1, b = 2}) {console.log(a, b)}
aFunction({}) //prints "1 2"

在这种情况下,"aFunction"接收一个对象,每当您用空对象调用该函数时,它会自动填充空白字段。或者,您可以使用所需参数调用"aFunction",例如:

aFunction({a: 2, b: 3}) //prints "2 3"

最新更新