Types: `utility`
Table of contents
Interfaces
Type Aliases
- Diff
- Filter
- FilteredResult
- Maybe
- Nil
- Omit
- Optional
- Override
- Overwrite
- PartialDeep
- Required
- Unpacked
- Unwrapped
- ValueOf
- WithoutNil
Type Aliases
Diff
Ƭ Diff<T
, U
>: T
extends U
? never
: T
Remove types from T that are assignable to U
Type parameters
Name |
---|
T |
U |
Defined in
Filter
Ƭ Filter<T
, U
>: T
extends U
? T
: never
Remove types from T that are NOT assignable to U
Type parameters
Name |
---|
T |
U |
Defined in
FilteredResult
Ƭ FilteredResult<T
, I
, E
>: { [P in keyof T]: P extends I ? T[P] : P extends E ? never : T[P] }
Filters the keys of an object (T), by list of included keys (I) and excluded (E)
Type parameters
Name | Type |
---|---|
T | T |
I | extends keyof T |
E | extends keyof T |
Defined in
Maybe
Ƭ Maybe<T
>: T
| Nil
Type parameters
Name |
---|
T |
Defined in
Nil
Ƭ Nil: null
| undefined
Defined in
Omit
Ƭ Omit<T
, K
>: Pick
<T
, Exclude
<keyof T
, K
>>
Omit the properties available to type. Useful for excluding properties from a type
Example
`Omit<{ a: number, b: number, c: number }, 'b'|'c'> // => { a: 1 }`
Type parameters
Name | Type |
---|---|
T | T |
K | extends keyof T |
Defined in
Optional
Ƭ Optional<T
, K
>: { [P in keyof T]: P extends K ? NonNullable<T[P]> | undefined : NonNullable<T[P]> }
Like Partial but makes certain properties optional
Example
`Optional<{ a: number, b: number }, 'b'>`
Type parameters
Name | Type |
---|---|
T | T |
K | extends keyof T |
Defined in
Override
Ƭ Override<T1
, T2
>: { [P in keyof T1]: P extends keyof T1 ? T2[P] : T1[P] }
Override specific properties on a type
Example
`Override<{ a: number, b: number }, { b: string }>`
Type parameters
Name | Type |
---|---|
T1 | T1 |
T2 | extends { [P in keyof T2]: P extends keyof T1 ? T2[P] : never } |
Defined in
Overwrite
Ƭ Overwrite<T1
, T2
>: { [P in Exclude<keyof T1, keyof T2>]: T1[P] } & T2
Overwrite a simple type with different properties. Useful changing and adding additional properties
Example
`Overwrite<{ a: number, b: number }, { b?: number }>`
Type parameters
Name |
---|
T1 |
T2 |
Defined in
PartialDeep
Ƭ PartialDeep<T
>: { [P in keyof T]?: PartialDeep<T[P]> }
A deep partial object
Type parameters
Name |
---|
T |
Defined in
Required
Ƭ Required<T
, K
>: { [P in keyof T]: P extends K ? NonNullable<T[P]> : NonNullable<T[P]> | undefined }
Like Partial but makes certain properties required
Example
`Required<{ a: number, b: number }, 'b'>`
Type parameters
Name | Type |
---|---|
T | T |
K | extends keyof T |
Defined in
Unpacked
Ƭ Unpacked<T
>: T
extends infer U[] ? U
: T
extends (...args
: any
[]) => infer U ? U
: T
extends Promise
<infer U> ? U
: T
From https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-inference-in-conditional-types
Type parameters
Name |
---|
T |
Defined in
Unwrapped
Ƭ Unwrapped<T
>: NonNullable
<T
>
Type parameters
Name |
---|
T |
Defined in
ValueOf
Ƭ ValueOf<T
>: T
[keyof T
]
Get the types object (the opposite of keyof)
Type parameters
Name |
---|
T |
Defined in
WithoutNil
Ƭ WithoutNil<T
>: { [P in keyof T]: T[P] extends Nil ? never : T[P] }
Without null or undefined properties
Type parameters
Name |
---|
T |