# PickIndexSignature

`type` in `plugin-kysely-postgres` · v0.4.2

<https://docs.seedcord.org/packages/plugin-kysely-postgres/0.4.2/types/pick-index-signature>

Pick only index signatures from the given object type, leaving out all explicitly defined properties.

This is the counterpart of `OmitIndexSignature`.

## Examples

```ts
import type {PickIndexSignature} from 'type-fest';

declare const symbolKey: unique symbol;

type Example = {
	// These index signatures will remain.
	[x: string]: unknown;
	[x: number]: unknown;
	[x: symbol]: unknown;
	[x: `head-${string}`]: string;
	[x: `${string}-tail`]: string;
	[x: `head-${string}-tail`]: string;
	[x: `${bigint}`]: string;
	[x: `embedded-${number}`]: string;

	// These explicitly defined keys will be removed.
	['kebab-case-key']: string;
	[symbolKey]: string;
	foo: 'bar';
	qux?: 'baz';
};

type ExampleIndexSignature = PickIndexSignature<Example>;
// {
// 	[x: string]: unknown;
// 	[x: number]: unknown;
// 	[x: symbol]: unknown;
// 	[x: `head-${string}`]: string;
// 	[x: `${string}-tail`]: string;
// 	[x: `head-${string}-tail`]: string;
// 	[x: `${bigint}`]: string;
// 	[x: `embedded-${number}`]: string;
// }
```

## Declaration

```ts
type PickIndexSignature<ObjectType> = {
    [
        KeyType in keyof ObjectType as {} extends Record<
            KeyType,
            unknown
        >
            ? KeyType
            : never
    ]: ObjectType[KeyType];
};
```

## See also

- [OmitIndexSignature   Object](/packages/plugin-kysely-postgres/0.4.2/types/omit-index-signature)
