Socket
Socket
Sign inDemoInstall

typescript-tuple

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

typescript-tuple - npm Package Compare versions

Comparing version 1.1.1 to 1.2.0

20

index.d.ts

@@ -31,2 +31,13 @@ /**

export declare type Concat<Left extends any[], Right extends any[]> = utils.Concat<Left, Right>;
/**
* Repeat a certain type into a tuple
* @example `Repeat<'foo', 4>` → `['foo', 'foo', 'foo', 'foo']`
* @warning To avoid potential infinite loop, `Count` must be an integer greater than or equal to 0
*/
export declare type Repeat<Type, Count extends number> = utils.Repeat<Type, Count, []>;
/**
* Concat multiple tuples
* @example `ConcatMultiple<[], [0], [1, 2], [3, 4, 5]>` → `[0, 1, 2, 3, 4, 5]`
*/
export declare type ConcatMultiple<TupleSet extends any[][]> = utils.ConcatMultiple<TupleSet>;
export declare namespace utils {

@@ -48,2 +59,11 @@ type Last<Tuple extends any[], Default = never> = {

}[Left extends [] ? 'emptyLeft' : Left extends [any] ? 'singleLeft' : 'multiLeft'];
type Repeat<Type, Count extends number, Holder extends any[] = []> = {
fit: Holder;
unfit: Repeat<Type, Count, Prepend<Holder, Type>>;
}[Holder['length'] extends Count ? 'fit' : 'unfit'];
type ConcatMultiple<TupleSet extends any[][]> = {
empty: [];
single: TupleSet extends [infer SoleTuple] ? SoleTuple : never;
multi: ((..._: Reverse<TupleSet>) => any) extends ((_: infer Last, ..._1: infer ReversedRest) => any) ? Last extends any[] ? ReversedRest extends any[][] ? Concat<ConcatMultiple<Reverse<ReversedRest>>, Last> : never : never : never;
}[TupleSet extends [] ? 'empty' : TupleSet extends [any] ? 'single' : 'multi'];
}

2

package.json
{
"name": "typescript-tuple",
"version": "1.1.1",
"version": "1.2.0",
"description": "Generics to work with tuples in TypeScript",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -59,4 +59,20 @@ # TypeScript Tuple

### `Repeat`
```typescript
import { Repeat } from 'typescript-tuple'
type Foo = Repeat<['x'], 5> // Expect ['x', 'x', 'x', 'x', 'x']
const foo: Foo = ['x', 'x', 'x', 'x', 'x']
```
### `ConcatMultiple`
```typescript
import { ConcatMultiple } from 'typescript-tuple'
type Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]> // Expect ['a', 'b', 'c']
const foo: Foo = ['a', 'b', 'c']
```
## License
[MIT](https://git.io/fA2d9) @ [Hoàng Văn Khải](https://github.com/KSXGitHub)
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc