Skip to main content
Module

x/scaffold/src/deps/types.ts>PartialDeep

scaffold your next project with style and 💗
Latest
type alias PartialDeep
import { type PartialDeep } from "https://deno.land/x/scaffold@0.3.0/src/deps/types.ts";

Create a type from another type with all keys and nested keys set to optional.

Use-cases:

  • Merging a default settings/config object with another object, the second object would be a deep partial of the default object.
  • Mocking and testing complex entities, where populating an entire object with its keys would be redundant in terms of the mock or test.

Examples

Example 1

import type {PartialDeep} from 'type-fest';

const settings: Settings = {
	textEditor: {
		fontSize: 14;
		fontColor: '#000000';
		fontWeight: 400;
	}
	autocomplete: false;
	autosave: true;
};

const applySavedSettings = (savedSettings: PartialDeep<Settings>) => {
	return {...settings, ...savedSettings};
}

settings = applySavedSettings({textEditor: {fontWeight: 500}});
definition: T extends BuiltIns ? T : T extends Map<infer KeyType, infer ValueType> ? PartialMapDeep<KeyType, ValueType> : T extends Set<infer ItemType> ? PartialSetDeep<ItemType> : T extends ReadonlyMap<infer KeyType, infer ValueType> ? PartialReadonlyMapDeep<KeyType, ValueType> : T extends ReadonlySet<infer ItemType> ? PartialReadonlySetDeep<ItemType> : T extends ((...arguments: any[]) => unknown) ? T | undefined : T extends object ? T extends Array<infer ItemType> ? ItemType[] extends T ? Array<PartialDeep<ItemType | undefined>> : PartialObjectDeep<T> : PartialObjectDeep<T> : unknown