@snailicide/build-config / utilities / SimplifyDeep
SimplifyDeep<Type, ExcludeType>
ts
type SimplifyDeep<Type, ExcludeType> = ConditionalSimplifyDeep<Type,
| ExcludeType
| NonRecursiveType
| Set<unknown>
| Map<unknown, unknown>, object>;Defined in: node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/simplify-deep.d.ts:110
Deeply simplifies an object type.
You can exclude certain types from being simplified by providing them in the second generic ExcludeType.
Useful to flatten the type output to improve type hints shown in editors.
Type Parameters
| Type Parameter | Default type |
|---|---|
Type | - |
ExcludeType | never |
Examples
import type {SimplifyDeep} from 'type-fest';
type PositionX = {
left: number;
right: number;
};
type PositionY = {
top: number;
bottom: number;
};
type Properties1 = {
height: number;
position: PositionY;
};
type Properties2 = {
width: number;
position: PositionX;
};
type Properties = Properties1 & Properties2;
// In your editor, hovering over `Props` will show the following:
//
// type Properties = Properties1 & Properties2;
type SimplifyDeepProperties = SimplifyDeep<Properties1 & Properties2>;
// But if wrapped in SimplifyDeep, hovering over `SimplifyDeepProperties` will show a flattened object with all the properties:
//
// SimplifyDeepProperties = {
// height: number;
// width: number;
// position: {
// top: number;
// bottom: number;
// left: number;
// right: number;
// };
// };import type {SimplifyDeep} from 'type-fest';
// A complex type that you don't want or need to simplify
type ComplexType = {
a: string;
b: 'b';
c: number;
...
};
type PositionX = {
left: number;
right: number;
};
type PositionY = {
top: number;
bottom: number;
};
// You want to simplify all other types
type Properties1 = {
height: number;
position: PositionY;
foo: ComplexType;
};
type Properties2 = {
width: number;
position: PositionX;
foo: ComplexType;
};
type SimplifyDeepProperties = SimplifyDeep<Properties1 & Properties2, ComplexType>;
// If wrapped in `SimplifyDeep` and set `ComplexType` to exclude, hovering over `SimplifyDeepProperties` will
// show a flattened object with all the properties except `ComplexType`:
//
// SimplifyDeepProperties = {
// height: number;
// width: number;
// position: {
// top: number;
// bottom: number;
// left: number;
// right: number;
// };
// foo: ComplexType;
// };See
Simplify