作为参考Remove blank attributes from an Object in Javascript,如何使其兼容Typescript?
JS函数(* 嵌套对象|ES10*):
function removeEmpty(obj) {
return Object.fromEntries(
Object.entries(obj)
.filter(([_, v]) => v != null)
.map(([k, v]) => [k, v === Object(v) ? removeEmpty(v) : v])
);
}
我尝试过使用Exclude<T, null>
,但它不适用于嵌套对象,我认为它不是正确的实用程序。
注意,返回的类型应该移除null
类型,但保留undefined
。
示例/预期行为:
type TestType = {
a?: {
b?: {
c: string;
} | null;
z?: {
x: string;
};
} | null;
};
const testObj: TestType = {
a: {
b: null,
z: { x: 'Hi' }
}
};
const resultObj = removeEmpty(testObj);
其中resultObj
类型类似于:
type ResultTestTypeExample = {
a?: {
b?: {
c: string;
};
z?: {
x: string;
};
};
};
2条答案
按热度按时间r8uurelv1#
这对你有用吗?
用法:
Playground
afdcj2ne2#
你可以用它移除空元素,也可以给你的类型赋予它将移除所有嵌套对象的属性