如何移除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
相关产品推荐
相关产品推荐

