types-kit.removeindexsignature.md

September 4, 2023 ยท View on GitHub

Home > types-kit > RemoveIndexSignature

RemoveIndexSignature type

Create a type that only has explicitly defined properties, absent of any index signatures.

Signature:

export type RemoveIndexSignature<T> = {
  [K in keyof T as K extends Keys<T>
    ? {} extends Record<K, never>
      ? never
      : K
    : never]: T[K]
}

References: Keys

Example

 interface Props {
      a?: number
      readonly b: number
      c: number
      [x: number]: number
      [x: string]: number | undefined
      [x: symbol]: number
    }
    // Expect: { a?: number, readonly b: number, c: number }
    type NewProps = RemoveIndexSignature<Props>