首页 > 解决方案 > 从自定义对象类型中删除可为空的属性

问题描述

我正在尝试创建一个已删除null void的类型。undefined

type TEST = {
  propOne:string
  propTwo: number
  propThree:null  // completely remove this property
}

type CLEAN<T> = { [P in keyof T]: NonNullable<T[P]> };

type FIXED = CLEAN<TEST>

const fixed:FIXED={ // error - it wants propThree property
    propOne:'',
    propTwo:1,
}

TS游乐场

标签: typescript

解决方案


您可以使用带有条件类型的键重新映射来映射可空键,never这些键将从结果类型中删除属性:

type CLEAN<T> = { [P in keyof T as null extends T[P] ? never : P]: T[P] };

操场


推荐阅读