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.