boost-ts.types
Typescript advanced type collection
Collection of advanced Typescript types to boost type programming
This collection mainly offers type operation for structured/complicated types, like tuple, union, object data type. By using this collection, "as any" can be avoided for the complicated type of Typescript functions.
type Sprinter = {
"name": string
"best": {
"100m": number
"200m": number
}
}
Generate
const target:KeyPath<Sprinter, ".", false> = {
"name": "Usain Bolt"
"best.100m" : 9.58
"best.200m" : 19.19
}
const target:KeyPath<Sprinter, "/", true> = {
"/name": "Usain Bolt"
"/best/100m" : 9.58
"/best/200m" : 19.19
}
const target:KeyArray<Sprinter> = {
[ [ "name" ], "Usain Bolt" ],
[ [ "best", "100m" ], 9.58 ],
[ [ "best", "200m" ], 19.19 ]
]
Get the head of type tuple.
// type Target = Date
type Target = Head<[Date, string, number]>
Remove a type from the head of type tuple.
// type Target = [string, number]
type Target = Tail<[Date, string, number]>
Add a type to the head of type tuple.
// type Target = [Date, string, number]
type Target = Push<Date, [string, number]>
Reverse the order of type tuple.
// Target = [number, string, boolean]
type Target = Reverse<[boolean, string, number]>
Remove a type from type tuple.
// Target = [boolean, number]
type Target = TupleOmit<string, [boolean, string, number]>
Fileter a type from type tuple.
// Target = [string, number]
type Target = TuplePick<string|number, [boolean, string, number]>
Zip two type tuples.
// Target = [ [1, boolean], [2, string, [3, number] ]
type Target = Zip<[1, 2, 3], [boolean, string, number]>
Decrease a number type.
// Target = 3
type Target = Decrease<4>
Compare two number types.
// Target1 = -1
type Target1 = Comp<1, 2>
// Target2 = 0
type Target2 = Comp<2, 2>
// Target3 = 1
type Target3 = Comp<2, 1>
- Some code of this library is based on this stackoverflow article.
- Thanks to the blog Suppress Error of type level programming of TypeScript. This library will be nothing without workarounds suggested by this blog. Japanese version is also published.
- typepark is an excellent library that provides the large collection of typescript types manipulation.
- The code of
Equals
implementation is copied from this comment