You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 04:35:18