You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
overseerr/src/utils/typeHelpers.ts

21 lines
656 B

export type Undefinable<T> = T | undefined;
export type Nullable<T> = T | null;
export type Maybe<T> = T | null | undefined;
/**
* Helps type objects with an arbitrary number of properties that are
* usually being defined at export.
*
* @param component Main object you want to apply properties to
* @param properties Object of properties you want to type on the main component
*/
export function withProperties<A extends object, B extends object>(
component: A,
properties: B
): A & B {
(Object.keys(properties) as (keyof B)[]).forEach((key) => {
Object.assign(component, { [key]: properties[key] });
});
return component as A & B;
}