Comparing version 0.1.17 to 0.1.18
@@ -1,5 +0,3 @@ | ||
export type IsEqual<TA, TB> = [TA, keyof TA] extends [TB, keyof TB] | ||
? ([TB, keyof TB] extends [TA, keyof TA] ? true : false) | ||
: false; | ||
export type IsEqual<TA, TB> = [TA, TB] extends [TB, TA] ? true : false; | ||
export type IsCompatible<T, TComparison> = T extends TComparison ? true : false; |
@@ -226,3 +226,3 @@ import {IsEqual} from './comparison'; | ||
? TObject extends object | ||
? {[K in KeyOfValueWithType<TObject, TValue, true>]: TObject[K]} | ||
? {[K in KeyOfValueWithType<TObject, TValue>]: TObject[K]} | ||
: never | ||
@@ -237,3 +237,3 @@ : {[K in KeyOfValueWithType<TObject, TValue, false>]: TObject[K]}; | ||
? TObject extends object | ||
? {[K in KeyOfValueNotWithType<TObject, TValue, true>]: TObject[K]} | ||
? {[K in KeyOfValueNotWithType<TObject, TValue>]: TObject[K]} | ||
: never | ||
@@ -248,3 +248,3 @@ : {[K in KeyOfValueNotWithType<TObject, TValue, false>]: TObject[K]}; | ||
? TObject extends object | ||
? {[K in KeyOfValueContainingType<TObject, TValue, true>]: TObject[K]} | ||
? {[K in KeyOfValueContainingType<TObject, TValue>]: TObject[K]} | ||
: never | ||
@@ -259,3 +259,3 @@ : {[K in KeyOfValueContainingType<TObject, TValue, false>]: TObject[K]}; | ||
? TObject extends object | ||
? {[K in KeyOfValueNotContainingType<TObject, TValue, true>]: TObject[K]} | ||
? {[K in KeyOfValueNotContainingType<TObject, TValue>]: TObject[K]} | ||
: never | ||
@@ -272,2 +272,16 @@ : {[K in KeyOfValueNotContainingType<TObject, TValue, false>]: TObject[K]}; | ||
export type OptionalizeUndefinedDeep<T> = T extends object | ||
? { | ||
[K in KeyOfValueContainingType<T, undefined>]?: OptionalizeUndefinedDeep< | ||
T[K] | ||
> | ||
} & | ||
{ | ||
[K in KeyOfValueNotContainingType< | ||
T, | ||
undefined | ||
>]: OptionalizeUndefinedDeep<T[K]> | ||
} | ||
: T; | ||
// Miscellaneous | ||
@@ -283,10 +297,4 @@ | ||
type __DeepReadonly<T> = {readonly [P in keyof T]: DeepReadonly<T[P]>}; | ||
export type DeepReadonly<T> = {readonly [P in keyof T]: DeepReadonly<T[P]>}; | ||
export type DeepReadonly<T> = T extends Primitive | ||
? T | ||
: T extends (infer U)[] | ||
? ReadonlyArray<__DeepReadonly<U>> | ||
: __DeepReadonly<T>; | ||
export type Intersection<TUnion> = (TUnion extends any | ||
@@ -293,0 +301,0 @@ ? (_: TUnion) => void |
@@ -1,5 +0,9 @@ | ||
// tslint:disable:class-name variable-name interface-over-type-literal | ||
// tslint:disable: interface-over-type-literal | ||
import {Primitive} from './types'; | ||
declare const __type: unique symbol; | ||
type __Type<T> = { | ||
__type: T; | ||
[__type]: T; | ||
}; | ||
@@ -9,4 +13,12 @@ | ||
export type Denominalize<T> = T extends Nominal<infer TDenominalized, any> | ||
? TDenominalized | ||
: T; | ||
export type DenominalizeDeep<T> = T extends Nominal<infer TDenominalized, any> | ||
? TDenominalized | ||
: {[TKey in keyof T]: DenominalizeDeep<T[TKey]>}; | ||
export class EmptyObjectPatch { | ||
protected _?: unknown; | ||
} |
{ | ||
"name": "tslang", | ||
"version": "0.1.17", | ||
"version": "0.1.18", | ||
"description": "TypeScript Language Type Utilities.", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
10655
312