@yandex/ymaps3-types
Version:
Types for ymaps3 maps library
19 lines (18 loc) • 720 B
TypeScript
type DeepReadonly<T> = T extends (infer R)[] ? DeepReadonlyArray<R> : T extends Function ? T : T extends object ? DeepReadonlyObject<T> : T;
interface DeepReadonlyArray<T> extends ReadonlyArray<DeepReadonly<T>> {
}
type DeepReadonlyObject<T> = {
readonly [P in keyof T]: DeepReadonly<T[P]>;
};
type Nullable<T> = T | null;
type Change<T> = {
old: T;
new: T;
} | null;
type Changes<T> = {
readonly [TKey in keyof T]: Change<T[TKey]>;
};
type WithDefaults<Props, DefaultProps extends Partial<Props>> = Props & {
[K in keyof DefaultProps]: K extends keyof Props ? NonNullable<Props[K]> : never;
};
export { DeepReadonly, DeepReadonlyArray, DeepReadonlyObject, Nullable, Change, Changes, WithDefaults };