Skip to main content


🔩 The missing TypeScript utils
type alias Id
import { type Id } from "";

Ensure that a that a specific type that we are declaring extends a more generic type

Use case example 1:

type MyObject = { p1: string; p2: string; a: string; b: string; };

We want to define a type that consist in an union of all the property name that are letters:

type AlphabeticalKeys = Id<keyof MyObject, "a" | "b">;

Here AlphabeticalKeys is "a" | "b" but it's better than simply writing it explicitly as we get autocompletion and we can't include a property name that does not exist on MyObject.

Use case example 2:

We want to declare object type that only take string or number as key value:

export type MyObject = Id<Record<string, string | number>, { p1: string; p2: number; }>;

If later on someone adds "p3": string[] he will get a type error.

Type Parameters

Specific extends Generic
definition: Specific