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.
21 lines
656 B
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;
|
|
}
|