Browse Source

improve DeepPartial utility type

pull/6866/head
Arman Ozak 6 years ago
parent
commit
2103cb339c
  1. 19
      npm/ng-packs/packages/core/src/lib/models/utility.ts

19
npm/ng-packs/packages/core/src/lib/models/utility.ts

@ -1,8 +1,21 @@
/* tslint:disable:ban-types */
import { TemplateRef, Type } from '@angular/core';
export type DeepPartial<T> = {
[P in keyof T]?: T[P] extends Record<string | number | symbol, any> ? DeepPartial<T[P]> : T[P];
};
export type DeepPartial<T> = Partible<T> extends never
? T
: {
[K in keyof T]?: DeepPartial<T[K]>;
};
type Partible<T> = T extends Primitive | Array<any>
? never
: {
[K in keyof T]: T[K] extends Function ? never : T[K];
} extends T
? T
: never;
export type Primitive = undefined | null | boolean | string | number | bigint | symbol;
export type InferredInstanceOf<T> = T extends Type<infer U> ? U : never;
export type InferredContextOf<T> = T extends TemplateRef<infer U> ? U : never;

Loading…
Cancel
Save