Specify required fields, rest will be optional.
export type Required<T, K extends keyof T> = Partial<T> & Pick<T, K>;
Specify which fields to omit.
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
Branded types.
export type Branded<Base, Type> = Base & {__brand__: Type};