Skip to content

Compact ​

Since 1.2.0

Compact type - remove never and undefined from objects.

Signature ​

typescript
type Compact<T> = {
  [K in keyof T as T[K] extends never ? never : undefined extends T[K] ? never : K]: T[K]
}

Parameters ​

ParameterDescription
TThe object type to compact

Description ​

Removes properties with never or undefined types from an object type. Combines the effects of StripNever and StripUndefined.

Examples ​

Basic Usage ​

typescript
import type { Compact } from 'uni-types'

type MyObject = {
  name: string
  invalid: never
  optional?: number
  age: number
}

type Result = Compact<MyObject>
// { name: string; age: number }

With Mixed Properties ​

typescript
import type { Compact } from 'uni-types'

type Mixed = {
  valid: string
  excluded: never
  maybeUndefined?: boolean
  alsoValid: number
}

type Result = Compact<Mixed>
// { valid: string; alsoValid: number }

Released under the MIT License.