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>