TypeScript Tuple
Generics to work with tuples in TypeScript
Requirements
Usage
IsFinite
import { IsFinite } from 'typescript-tuple'
type Foo = IsFinite<[0, 1, 2]>
const foo: Foo = true
type Bar = IsFinite<[0, 1, 2, ...number[]]>
const bar: Bar = false
type Baz = IsFinite<[0, 1, 2], 'finite', 'infinite'>
const baz: Baz = 'finite'
First
import { First } from 'typescript-tuple'
type Foo = First<['a', 'b', 'c']>
const foo: Foo = 'a'
Last
import { Last } from 'typescript-tuple'
type Foo = Last<['a', 'b', 'c']>
const foo: Foo = 'c'
Append
import { Append } from 'typescript-tuple'
type Foo = Append<['a', 'b', 'c'], 'x'>
const foo: Foo = ['a', 'b', 'c', 'x']
Prepend
import { Prepend } from 'typescript-tuple'
type Foo = Prepend<['a', 'b', 'c'], 'x'>
const foo: Foo = ['x', 'a', 'b', 'c']
Reverse
import { Reverse } from 'typescript-tuple'
type Foo = Reverse<['a', 'b', 'c']>
const foo: Foo = ['c', 'b', 'a']
Concat
import { Concat } from 'typescript-tuple'
type Foo = Concat<['a', 'b', 'c'], [0, 1, 2]>
const foo: Foo = ['a', 'b', 'c', 0, 1, 2]
Repeat
import { Repeat } from 'typescript-tuple'
type Foo = Repeat<'x', 5>
const foo: Foo = ['x', 'x', 'x', 'x', 'x']
type Bar = Repeat<'x', 1 | 3 | 4>
const bar1: Bar = ['x']
const bar3: Bar = ['x', 'x', 'x']
const bar4: Bar = ['x', 'x', 'x', 'x']
type Baz = Repeat<'x', number>
const baz: Baz = Array<number>()
NOTES:
- Due to TypeScript design limitations, using floating point numbers and negative numbers might lead to infinite loop within TSC compiler, avoid doing this.
ConcatMultiple
import { ConcatMultiple } from 'typescript-tuple'
type Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]>
const foo: Foo = ['a', 'b', 'c']
License
MIT @ Hoàng Văn Khải