Files
explore/types/utils.ts
T
tom goriunovandGitHub da0533ef93 Mixpanel profiles (#2044)
* initial implementation

* remove unnecessary properties
2024-06-26 12:07:24 +02:00

20 lines
727 B
TypeScript

export type ArrayElement<ArrType> = ArrType extends ReadonlyArray<infer ElementType>
? ElementType
: never;
export type ExcludeNull<T> = T extends null ? never : T;
export type ExcludeUndefined<T> = T extends undefined ? never : T;
export type KeysOfObjectOrNull<T> = keyof ExcludeNull<T>;
/** Combines members of an intersection into a readable type. */
// https://twitter.com/mattpocockuk/status/1622730173446557697?s=20&t=NdpAcmEFXY01xkqU3KO0Mg
export type Evaluate<Type> = { [key in keyof Type]: Type[key] } & unknown
// Keeps in the object type only those properties that have the provided type (e.g only numbers)
export type PickByType<T, X> = Record<
{[K in keyof T]: T[K] extends X ? K : never}[keyof T],
X
>;