2 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
此解決方案將通過刪除具有未定義值的鍵來改變輸入對(duì)象。
function removeUndefined <T>(object: T): T {
for (const id in object) {
if (object[id] === undefined) {
delete object[id];
}
}
return object;
}
它似乎適用于您的測(cè)試用例:Test in typescript playground

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
是的,每次迭代reduce都會(huì)返回一個(gè) new{}實(shí)例Object。
因此,要使返回對(duì)象與參數(shù)具有相同的實(shí)例,您應(yīng)該進(jìn)行以下更改。
export const FilterUndefined = (obj) => {
return Object.entries(obj).reduce((acc, [key, value]) => {
if (value) {acc[key] = value;}
else {delete acc[key]}
return acc;
}, new obj.constructor);
};
或者您可以new obj.__proto__.constructor根據(jù)target您正在使用的打字稿輸出使用。
如果您對(duì)此代碼段有打字稿問題,請(qǐng)回復(fù)。
添加回答
舉報(bào)