Mapped Types
Mapped Types Utilities for TypeScript Projects
- Thoroughly tested for type correctness
- No third-party dependencies
- Semantic Versioning
- Output separate bundles for different workflow needs (es5-commonjs, es5-module, jsnext)
Table of Contents
Mapped Types
Type Utils
Redux Typesafe Actions
DEPRECATION WARNING: this part will be removed in next major release, please use typesafe-actions
directly instead!
API Docs
Archived docs:
Mapped Types
DiffKeys
DiffKeys<K extends string, L extends string>
Compare set of keys K
and L
and return a subset with a difference
Usage:
import { OmitKeys } from 'react-redux-typescript';
interface BaseProps { a: string, b?: number, c: boolean }
interface Props { a: number, d: number }
type Diffed_Keys = DiffKeys<keyof Props, keyof Props2>;
OmitKeys
OmitKeys<K extends string, K2 extends K>
From set of keys K
subtract it's subset K2
Usage:
import { OmitKeys } from 'react-redux-typescript';
interface BaseProps { a: string, b?: number, c: boolean }
type Omitted_Keys = OmitKeys<keyof BaseProps, 'a'>;
Diff
Diff<T extends object, U extends object>
From T
remove intersecting properties with U
Usage:
import { OmitKeys } from 'react-redux-typescript';
interface BaseProps { a: string, b?: number, c: boolean }
interface Props { a: number, d: number }
type Diffed_Props = Diff<BaseProps, Props>;
Omit
Omit<T extends object, K extends keyof T>
From T
remove a set of properties K
Usage:
import { OmitKeys } from 'react-redux-typescript';
interface BaseProps { a: string, b?: number, c: boolean }
type Omitted_Props = Omit<BaseProps, 'a'>;
Overwrite
Overwrite<T extends object, U extends object>
Replace intersecting properties from U
to T
Usage:
import { OmitKeys } from 'react-redux-typescript';
interface BaseProps { a: string, b?: number, c: boolean }
interface Props { a: number, d: number }
type Overwritten_Props = Overwrite<BaseProps, Props>;
Assign
Assign<T extends object, U extends object>
Copy and replace all properties from U
to T
Usage:
import { Assign } from 'react-redux-typescript';
interface BaseProps { a: string, b?: number, c: boolean }
interface Props { a: number, d: number }
type Assigned_Props = Assign<BaseProps, Props>;
Type Utils
getReturnOfExpression
Get return value of an "expression" with inferred return type
Alias: returntypeof
https://github.com/Microsoft/TypeScript/issues/6606
function getReturnOfExpression<T>(
expression: (...params: any[]) => T,
): T;
import { getReturnOfExpression } from 'react-redux-typescript';
const increment = () => ({ type: 'INCREMENT' as 'INCREMENT' });
const returnOfIncrement = getReturnOfExpression(increment);
type INCREMENT = typeof returnOfIncrement;
MIT License
Copyright (c) 2016 Piotr Witek piotrek.witek@gmail.com (http://piotrwitek.github.io)