mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
20 lines
727 B
TypeScript
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
|
|
>;
|