types-kit.strictomit.md

September 4, 2023 ยท View on GitHub

Home > types-kit > StrictOmit

StrictOmit type

Strict version of Omit.

Signature:

export type StrictOmit<T, K extends Keys<T>> = {
  [P in keyof T as P extends StrictExclude<
    Keys<T>,
    OtherToString<K> extends infer V
      ? [V] extends [Keys<T>]
        ? V
        : never
      : never
  >
    ? P
    : never]: T[P]
}

References: Keys, StrictExclude, OtherToString

Example

interface Props = { a: 1, b: 2, c: 3 }
// Expect: { b: 2, c: 3  }
type PropValue = StrictOmit<Props, 'a'>