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

如何移除TypeScript对象类型中值为never的属性?

实现TypeScript类型GetRidOfNeverValues,移除值类型为never的属性

需求很明确:定义一个类型工具,自动移除对象类型中所有值类型为never的属性。

示例场景

type A = {
  a: number;
  b: string;
  c: never;
};

type B = GetRidOfNeverValues<A>;

// 最终type B会变成:
// {
//   a: number;
//   b: string;
// }

实现代码

利用TypeScript的键重映射和条件类型可以轻松实现这个需求:

type GetRidOfNeverValues<T> = {
  [K in keyof T as T[K] extends never ? never : K]: T[K]
};

代码说明

  • [K in keyof T as ...] 是键重映射语法,让我们能在遍历属性时筛选保留的键
  • 条件判断T[K] extends never ? never : K:如果当前属性的值是never类型,就返回never来排除该键;否则保留原属性键
  • 保留下来的属性,值类型保持原类型不变

内容的提问来源于stack exchange,提问作者Natasha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:06:16