TypeScript中如何创建映射条件类型移除string|null属性?求纠错
解决TypeScript中移除
string|null类型属性的映射条件类型问题 你写的ExcludeNullableFields逻辑完全搞反了——当前的条件是保留类型为string|null的属性,而你需要的是移除这类属性,所以条件分支的返回值得调换过来。
修正后的代码如下:
interface Something { id: string; name: string | null; } interface AnotherThing { id: string; name: string; } // 当属性类型是string|null时排除该键,否则保留 type ExcludeNullableFields<A> = { [K in keyof A as A[K] extends string | null ? never : K]: A[K]; }; type NamelessThing = ExcludeNullableFields<Something>; // 结果:{ id: string } 符合预期 type NamedThing = ExcludeNullableFields<AnotherThing>; // 结果:{ id: string; name: string } 符合预期
如果你的需求是移除所有包含null的string相关属性(比如string | null | undefined这类混合类型),可以把条件调整为A[K] extends string | null | undefined ? never : K,但根据你的示例场景,上面的修正已经完全满足需求。
内容的提问来源于stack exchange,提问作者Joseph Beuys' Mum
相关产品推荐
相关产品推荐

