react-redux-typescript
Advanced tools
Comparing version 3.0.0-rc.0 to 3.0.0-rc.1
@@ -1,2 +0,2 @@ | ||
export declare type KeyDiff<T extends string, U extends string> = ({ | ||
export declare type DiffKeys<T extends string, U extends string> = ({ | ||
[K in T]: K; | ||
@@ -8,4 +8,6 @@ } & { | ||
})[T]; | ||
export declare type Omit<T, K extends keyof T> = Pick<T, KeyDiff<keyof T, K>>; | ||
export declare type Minus<T, U> = Pick<T, KeyDiff<keyof T, keyof U>>; | ||
export declare type Overwrite<T, U> = Pick<T, KeyDiff<keyof T, keyof U>> & U; | ||
export declare type OmitKeys<T extends string, U extends T> = (DiffKeys<T, U>); | ||
export declare type Diff<T extends object, U extends object> = Pick<T, DiffKeys<keyof T, keyof U>>; | ||
export declare type Omit<T extends object, K extends keyof T> = Pick<T, DiffKeys<keyof T, K>>; | ||
export declare type Overwrite<T extends object, U extends object> = Pick<(Diff<T, U> & U), OmitKeys<keyof T, never>>; | ||
export declare type Assign<T extends object, U extends object> = Pick<(Diff<T, U> & U), OmitKeys<keyof (T & U), never>>; |
@@ -1,2 +0,2 @@ | ||
export declare type KeyDiff<T extends string, U extends string> = ({ | ||
export declare type DiffKeys<T extends string, U extends string> = ({ | ||
[K in T]: K; | ||
@@ -8,4 +8,6 @@ } & { | ||
})[T]; | ||
export declare type Omit<T, K extends keyof T> = Pick<T, KeyDiff<keyof T, K>>; | ||
export declare type Minus<T, U> = Pick<T, KeyDiff<keyof T, keyof U>>; | ||
export declare type Overwrite<T, U> = Pick<T, KeyDiff<keyof T, keyof U>> & U; | ||
export declare type OmitKeys<T extends string, U extends T> = (DiffKeys<T, U>); | ||
export declare type Diff<T extends object, U extends object> = Pick<T, DiffKeys<keyof T, keyof U>>; | ||
export declare type Omit<T extends object, K extends keyof T> = Pick<T, DiffKeys<keyof T, K>>; | ||
export declare type Overwrite<T extends object, U extends object> = Pick<(Diff<T, U> & U), OmitKeys<keyof T, never>>; | ||
export declare type Assign<T extends object, U extends object> = Pick<(Diff<T, U> & U), OmitKeys<keyof (T & U), never>>; |
@@ -1,2 +0,2 @@ | ||
export declare type KeyDiff<T extends string, U extends string> = ({ | ||
export declare type DiffKeys<T extends string, U extends string> = ({ | ||
[K in T]: K; | ||
@@ -8,4 +8,6 @@ } & { | ||
})[T]; | ||
export declare type Omit<T, K extends keyof T> = Pick<T, KeyDiff<keyof T, K>>; | ||
export declare type Minus<T, U> = Pick<T, KeyDiff<keyof T, keyof U>>; | ||
export declare type Overwrite<T, U> = Pick<T, KeyDiff<keyof T, keyof U>> & U; | ||
export declare type OmitKeys<T extends string, U extends T> = (DiffKeys<T, U>); | ||
export declare type Diff<T extends object, U extends object> = Pick<T, DiffKeys<keyof T, keyof U>>; | ||
export declare type Omit<T extends object, K extends keyof T> = Pick<T, DiffKeys<keyof T, K>>; | ||
export declare type Overwrite<T extends object, U extends object> = Pick<(Diff<T, U> & U), OmitKeys<keyof T, never>>; | ||
export declare type Assign<T extends object, U extends object> = Pick<(Diff<T, U> & U), OmitKeys<keyof (T & U), never>>; |
{ | ||
"name": "react-redux-typescript", | ||
"version": "3.0.0-rc.0", | ||
"version": "3.0.0-rc.1", | ||
"description": "React / Redux / TypeScript Utils", | ||
@@ -5,0 +5,0 @@ "author": "Piotr Witek <piotrek.witek@gmail.com> (http://piotrwitek.github.io)", |
101
README.md
@@ -12,3 +12,3 @@ # React / Redux / TypeScript Utils | ||
## TS Redux Actions | ||
## Redux Actions Utils | ||
> For advanced docs check here: https://github.com/piotrwitek/ts-redux-actions | ||
@@ -18,5 +18,8 @@ - [createAction](#createaction) | ||
## Mapped Types | ||
- [DiffKeys](#diffkeys) | ||
- [OmitKeys](#omitkeys) | ||
- [Diff](#diff) | ||
- [Omit](#omit) | ||
- [Overwrite](#overwrite) | ||
- [Assign](#assign) | ||
@@ -33,3 +36,3 @@ ## Type Utils | ||
## TS Redux Actions | ||
## Redux Actions Utils | ||
@@ -52,30 +55,90 @@ ### createAction | ||
### KeyDiff<T extends string, U extends string> | ||
### DiffKeys | ||
> Return a difference of non-related string literal unions | ||
```ts | ||
type KeyDiffTest = | ||
KeyDiff<'a' | 'b' | 'c', 'c' | 'd'>; | ||
// Expect: 'a' | 'b' | ||
type DiffKeys<T extends string, U extends string> | ||
``` | ||
### Omit<T, K extends keyof T> | ||
Usage: | ||
```ts | ||
type OmitTest = | ||
Omit<{ a: string, b?: number, c: boolean }, 'a'>; | ||
// Expect: { b?: number | undefined, c: boolean } | ||
interface BaseProps { a: string, b?: number, c: boolean } | ||
interface Props { a: number, d: number } | ||
type Diffed_Keys = DiffKeys<keyof Props, keyof Props2>; | ||
// Expect: 'b' | 'c' | ||
``` | ||
### Minus<T, U> | ||
### OmitKeys | ||
> Omit part of string literal union with constraint to existing literals | ||
```ts | ||
type MinusTest = | ||
Minus<{ a: string, b?: number, c: boolean }, { a: any }>; | ||
type OmitKeys<T extends string, U extends T> | ||
``` | ||
Usage: | ||
```ts | ||
interface BaseProps { a: string, b?: number, c: boolean } | ||
type Omitted_Keys = OmitKeys<keyof BaseProps, 'a'>; | ||
// Expect: 'b' | 'c' | ||
``` | ||
### Diff | ||
> Return an object containing non-intersecting properties of non-related objects | ||
```ts | ||
type Diff<T extends object, U extends object> | ||
``` | ||
Usage: | ||
```ts | ||
interface BaseProps { a: string, b?: number, c: boolean } | ||
interface Props { a: number, d: number } | ||
type Diffed_Props = Diff<BaseProps, Props>; | ||
// Expect { b?: number | undefined, c: boolean } | ||
``` | ||
### Overwrite<T, U> | ||
### Omit | ||
> Omit object property with constraint to existing keys | ||
```ts | ||
type OverwriteTest = | ||
Overwrite<{ a: string, b?: number, c: boolean }, { a: number }>; | ||
// Expect: { b?: number | undefined, c: boolean } & { a: number } | ||
type Omit<T extends object, K extends keyof T> | ||
``` | ||
Usage: | ||
```ts | ||
interface BaseProps { a: string, b?: number, c: boolean } | ||
type Omitted_Props = Omit<BaseProps, 'a'>; | ||
// Expect: { b?: number | undefined, c: boolean } | ||
``` | ||
### Overwrite | ||
> Overwrite intersecting properties from <U> to <T> | ||
```ts | ||
type Overwrite<T extends object, U extends object> | ||
``` | ||
Usage: | ||
```ts | ||
interface BaseProps { a: string, b?: number, c: boolean } | ||
interface Props { a: number, d: number } | ||
type Overwritten_Props = Overwrite<BaseProps, Props>; | ||
// Expect: { a: number, b?: number | undefined, c: boolean } | ||
``` | ||
### Assign | ||
> Assign properties from <U> to <T> (overwrite intersecting) | ||
```ts | ||
type Assign<T extends object, U extends object> | ||
``` | ||
Usage: | ||
```ts | ||
interface BaseProps { a: string, b?: number, c: boolean } | ||
interface Props { a: number, d: number } | ||
type Assigned_Props = Assign<BaseProps, Props>; | ||
// Expect: { a: number, b?: number | undefined, c: boolean, d: number } | ||
``` | ||
--- | ||
@@ -87,4 +150,4 @@ | ||
> Get return value of an "expression" with inferred return type | ||
> alias: returntypeof | ||
https://github.com/Microsoft/TypeScript/issues/6606 | ||
Alias: `returntypeof` | ||
https://github.com/Microsoft/TypeScript/issues/6606 | ||
@@ -91,0 +154,0 @@ ```ts |
46795
58
600
169